Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отображение графики [D7, XP]


Страницы:   1 2

bestolkov ©   (2011-12-09 12:40:00) 

Всем привет! Делаю следующее:
interface
uses
 Windows,GDIPAPI,GDIPOBJ, SysUtils,jps_msg;
type
 TViewer = class(TObject)
private
//ïåðåìåííûå GDI+
 graphics : TGPGraphics;
 Bitmap : TGpBitmap;
 MplayBack : TGPGraphics;
 cBitmap: TGPCachedBitmap;
 Pen: TGPPen;
 FontFamily: TGPFontFamily;
 Font: TGPFont;
 FontBold: TGPFont;
 SolidBrush:TGPSolidBrush;
 // protected

public
 constructor Create (Playback : HDC);
 destructor  Destroy; override;
 procedure ViewParam ();

end;

implementation

constructor TViewer.Create (Playback : HDC);
begin
  Bitmap:= TGpBitmap.Create(1000 ,1000,2498570);//áèòîâàÿ êàðòà(ïàìÿòü)
  graphics := TGPGraphics.Create(Bitmap);
  graphics.Clear(aclBlack);
  MplayBack :=TGPGraphics.Create(Playback);
  Pen := TGPPen.Create(MakeColor(55, 55, 55));
  Pen.SetDashStyle(DashStyleDot);
  FontFamily := TGPFontFamily.Create('Lucida Console');
  Font       := TGPFont.Create(FontFamily, 14, FontStyleRegular, UnitPixel);
  FontBold   := TGPFont.Create(FontFamily, 16, FontStyleBold, UnitPixel);

  SolidBrush := TGPSolidBrush.Create(MakeColor(0, 255, 0));

  inherited Create;
end;

destructor  TViewer.Destroy;
begin
           Pen.Free;
      Font.Free;
    Bitmap.Free;
  graphics.Free;
 MplayBack.Free;
FontFamily.Free;
SolidBrush.Free;
FontBold.Free;
inherited Destroy;
end;

procedure TViewer.ViewParam ();

begin
 DrawSTR('Hello world');
 cBitmap:= TGPCachedBitmap.Create(bitmap,MplayBack);
 MplayBack.DrawCachedBitmap(cBitmap, 0, 0);
 cBitmap.Free;
end;

end.


Затем в коде отображающей пограммы:

procedure TForm1.Button1Click(Sender: TObject);
var Viewer: TViewer;

begin
Viewer:=TViewer.Create(PaintBox1.Canvas.Handle);
Viewer.ViewParam()

GyroHorizon.Free;

end;

Все работает. А вот если экзмепляр объекта создавать в OnCreate формы, а отображать в Button1Click, то ничего не видно.. В чем проблема? и как задачи вывода на экран графики и текста правильно решать?


bestolkov   (2011-12-09 12:59:00) [21]

Т.е. что я хотел вообще сделать: есть таймер, который следит за некоторыми параметрами и в случае изменения этих параметров, на PaintBoxе рисуются строки. Еесли таймер выключен, то строки рисуются со значениями по умолчанию.


bestolkov   (2011-12-09 12:56:00) [22]

А в целом концепция верная?


Сергей М.   (2011-12-09 12:53:00) [23]


> В чем проблема?


В том что в момент выполнения обработчика OnCreate окна формы еще не существует.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо