Einzelnen Beitrag anzeigen

Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#1

Canvas - > Bitmap

  Alt 23. Jul 2012, 11:46
Hallo,

Ich habe schon fleißig das Forum durchstöbert und auch einiges gefunden aber leider konnte Ich mir daraus nichts funktionsfähiges gutes zusammenbasteln. Habe nur was von dpi, metafiles etc etc gelesen...

Ich habe eine Komponente die auf einem Canvas Grapiken zeichnet. Die Komponente ist an Ihrem einsatzort nicht sonderlich groß.

Mein Problem: Die Canvas - Auflösung ist abhängig vom Bildschirm.

Ich würde gerne eine zweite Canvas für meine Komponete erstellen, welche nie sichtbar ist und deren width / height in Pixeln von mir angegeben wird.

Ich möchte jetzt im Grunde folgendes machen: Die Canvas der Grapik-Komponente soll ohne sich zu zeichnen (also non-visuell) auf eine 2000px mal 2000 px Fläche skaliert werden, diese Werte würde ich evt noch gerne dynamisch machen. Dann wird das onscale event ja automatisch ausgelöst und die canvas wird neu gezeichnet.(allerdings wieder nicht sichtbar).

Zum Schluss mit meiner SaveCanvas - Methode abgespeichern.

Sobald Ich die unsichtbare Canvas mit meiner wunschauflösung gezeichnet habe komme Ich wieder alleine klar

Meine Canvas Save Methode sieht so aus:
Delphi-Quellcode:
procedure SaveCanvas(SaveCanvas : TCanvas; FileName : string);
var
  Bitmap : TBitmap;
begin
  Bitmap := TBitmap.Create;
  Try
    // Hier nicht 500x500 sonder die Width / Heigth der Canvas, welche Ich dann mit
    // Client-Rect berechne oder mit übergebe
    Bitmap.Width := 500;
    Bitmap.Height := 500;
    BitBlt(Bitmap.Canvas.Handle,0,0,Bitmap.Width,Bitmap.Height,
           SaveCanvas.Handle,0,0,SRCCOPY);
    Bitmap.SaveToFile(FileName);
  Finally
    Bitmap.Free;
  end;
end;
So stelle Ich mir meine Neue Klasse vor:
Delphi-Quellcode:
  
type
  TSimpleChartScaleable := class(TSimpleChart);
    InvisWidth : Integer;
    InvisHeigth : Integer;
    InvisCanvas : TCanvas;
Kann mir jemand weiterhelfe? Ich habe Keine Ahnung wie Ich der Canvas Befehle eine feste größe zu haben und sich dann entsprechend vollzeichnen zu lassen um für meinen Export bereit zu stehen.

Grüße
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!
  Mit Zitat antworten Zitat