Hi, Dani ich habe in der Onlinehilfe wegen den Tcanvas nochmal nach geschaut und habe eine
Beispielprocedur gefunden die aber meistens nur halwegs eine Einführung geben aber immer noch verfollstädigt werden müssen.
Bei mir wärs ein richtiges Beispiel wenn es wie ein Demo funktioniert und man dann selbst den Schwierigkeitsgrad nach Bedarf erhöht.
Hier soll auch Canvasobject erzeugt werden.Ja wenns funktioniert kann man etwas lernen.
Das Borland Bsp.prog:
Wenn Komponenten eingefügt werden in eine abgeleitete Klasse dann Actionlist verwenden .
Mit Actionlist habe ich nicht Probiert kann Ursache sein habe es noch nicht genutzt wei auch nicht wie.Und nun das Borlandbeispiel auch das hilft mir wie Canvas implementiert wird.
In das leere Image hatte ich ein bild geladen.
Hoffentlich kommt es mit deiner hilfe zum laufen.
Gruss
biochip
.................................................. .........................
Ab hier Borland Beispiel
TCanvas.Create, GetDeviceContext,
Handle, Palette (Beispiel)
Mit der Methode GetFormImage können Sie ein Bitmap eines Formulars ermitteln. Die folgende Methode kann einer benutzerdefinierten, von TWinControl abgeleiteten Klasse hinzugefügt werden, um diese als Bitmap zu speichern.
Delphi-Quellcode:
type
LogPal = record
lpal : TLogPalette;
dummy:Array[0..255] of TPaletteEntry;
end;
procedure TMyControl.SaveAsBmp(fileName: TFileName);
var
Source: TComponent;
SysPal : LogPal;
tempCanvas: TCanvas;
sourceRect, destRect: TRect;
image2save: TImage;
notUsed: HWND;
begin
tempCanvas := TCanvas.Create;
try
tempCanvas.Handle := GetDeviceContext(notUsed);//Hier kam Fehlermeldung wie bei Tshape
image2save:=TImage.create(self);
try
with image2save do
begin
Height := Self.Height;
Width := Self.Width;
destRect := Rect(0,0,Width,Height);
sourceRect := destRect;
Canvas.CopyRect(destRect,tempCanvas,sourceRect);
SysPal.lPal.palVersion:=$300;
SysPal.lPal.palNumEntries:=256;
GetSystemPaletteEntries(tempCanvas.Handle,0,256,SysPal.lpal.palPalEntry);
Picture.Bitmap.Palette:= CreatePalette(Syspal.lpal);
end;
image2save.Picture.SaveToFile(fileName);
finally
image2save.Free;
end;
finally
tempCanvas.Free;
end;
end;