Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Icon to Bitmap: StrechDraw schneidet Bereiche ab (https://www.delphipraxis.net/15431-icon-bitmap-strechdraw-schneidet-bereiche-ab.html)

Stanlay Hanks 28. Jan 2004 16:06


Icon to Bitmap: StrechDraw schneidet Bereiche ab
 
Hallo zusammen! Ihr seht mich wiedermal ratlos. :cry: Ich wollte mir nur auf die schnelle ein kleines Prog schreiben, das alle meine Icons Files in Bitmaps umwandelt und dabei auch die Größe verändert. Ich hab dazu hier in der DP den Code hier gefunden.

Delphi-Quellcode:
function IconToBitmap(Icon: TIcon; NewHeight, NewWidth : Integer): TBitmap;
begin
  Result := TBitmap.Create;
  try
    Result.Width := NewWidth;
    Result.Height := NewHeight;
    Result.Canvas.StretchDraw(Rect(0,0,NewWidth,NewHeight),Icon);
  except
  .
  .
  .
Der Original Code verwendet allerdings "Draw" und nicht StretchDraw. Ich hab ihn nur etwas angepasst, damit auch die neuen Maße berücksichtigt werden.

Jetzt zu meinem Problem: Das ganze funktioniert zwar, aber leider nur teilweise. Das Bitmap wird erstellt, aber das Icon wird nicht verkleinert, sondern nur der Bereich außen drum. Das heißt, der Rest der nicht in den angegebenen Bereich passt, wird einfach abgeschnitten.

In der OH steht nur:

Zitat:

Mit StretchDraw können Sie eine Grafik genau in ein angegebenes Reckteck einpassen. StretchDraw ruft die Methode Draw der Grafik auf. Auf welche Weise die Grafik in das Rechteck eingepasst wird, hängt vom jeweiligen Grafikobjekt ab. Unter Umständen ändern sich dabei der Vergrößerungsfaktor und/oder das Seitenverhältnis.
Kann mir da vielleicht wer weiterhelfen? Vergrößert StretchDraw etwa nur?


Danke, man liest sich, Stanlay :hi:

Noch zur Ergänzung: Wenn ich das ganze größer mache, als das Original Icon, ist in dem Bitmap einfach nur eine weiße Fläche und das Original Icon in seiner normalen Größe zu sehen. Ich hoffe, man kann sich das vorstellen.

Stanlay Hanks 28. Jan 2004 16:27

Re: Icon to Bitmap: StrechDraw schneidet Bereiche ab
 
:wall: Entschuldigt bitte, aber ich habs grade hinbekommen :wall:
Ich bin sozusagen einen Umweg über ein zweites Bitmap gegangen: Ich hab das Icons zuerst in ein Bitmap geladen und dann dieses Bitmap mit StretchDraw vergrößert auf das Result Image gezeichnet. Hier mein funktionsfähiger Code.

Delphi-Quellcode:
function IconToBitmap(Icon: TIcon; NewHeight, NewWidth : Integer): TBitmap;
var bit : TBitmap;
begin
  bit := TBitmap.Create;  //Umweg über ein Bitmap
  Result := TBitmap.Create;
  Try
    Bit.Width := Icon.Width;
    Bit.Height := Icon.Height;
    Bit.Canvas.Draw(0,0,Icon);
    Result.Width := NewWidth;
    Result.Height := NewHeight;
    Result.Canvas.StretchDraw(Rect(0,0,NewWidth,NewHeight),Bit);
  Finally
    FreeAndNil(Bit);
Entschuldigt bitte den überflüssigen Thread...vielleicht kann ja wenigstens später noch wer was damit anfangen :oops:

Man liest sich, Stanlay :hi:

Currywurst 28. Jan 2004 16:31

Re: Icon to Bitmap: StrechDraw schneidet Bereiche ab
 
sollte es nicht auch einfach so gehen (zumindest beim vergrößern) :-)

Code:
  Result := TBitmap.Create;
  try
    Result.Width:=NewWidth;
    Result.Height:=NewHeight;
    Result.Canvas.Draw(0, 0, Icon);
    Result.Canvas.StretchDraw(Rect(0, 0, Icon.Width, Icon.Height), Result);


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz