Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
Delphi XE3 Enterprise
|
AW: x Bilder einheitlich skaliert auf drittes Bild zeichen
22. Apr 2013, 10:26
Darauf hatte ich gar nicht geachtet, da von Rotation ursprünglich keine Rede war.
Mit einem Umweg über ein Bitmap geht es:
Delphi-Quellcode:
Procedure LoadAndPaint(FileName: String; C: TCanvas; x, y, BH: Integer;BitMapTransparent:Boolean=false);
var
G,G2: TGraphic;
SC: Integer;
begin
if UpperCase(ExtractFileExt(FileName)) = '.PNG' then
begin
G := TPngImage.Create;
end
else if UpperCase(ExtractFileExt(FileName)) = '.BMP' then
begin
G := TBitMap.Create;
if BitMapTransparent then TBitMap(G).Transparent := true;
end
else if UpperCase(ExtractFileExt(FileName)) = '.GIF' then
G := TGifImage.Create
else if (UpperCase(ExtractFileExt(FileName)) = '.JPG') or (UpperCase(ExtractFileExt(FileName)) = '.JPEG') then
G := TJpegImage.Create
else raise ENotImplemeted.Create('Nicht berücksichtigtes Dateiformat');
G2 := TBitmap.Create;
try
G.LoadFromFile(FileName);
G2.Assign(G);
G2.Transparent := BitMapTransparent;
SC := G.Width;
if G.Height > G.Width then
SC := G.Height;
SetCanvasZoomAndRotation(C, BH / SC, 0, x, y);
C.Draw(0, 0, G2);
SetCanvasZoomAndRotation(C , 1, 0, 0,0);
finally
G.Free;
G2.Free;
end;
end;
Thomas Wassermann H₂♂ Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂♂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
|
|
Zitat
|