![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отображение графики [D7, XP]
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 окна формы еще не существует.