Einzelnen Beitrag anzeigen

biochip

Registriert seit: 10. Mai 2004
Ort: Hartha
9 Beiträge
 
Delphi 6 Personal
 
#5

Re: Fehlermeldung beim canvasobject in Tshape

  Alt 19. Jan 2005, 22:11
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;
  Mit Zitat antworten Zitat