![]() |
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:
Der Original Code verwendet allerdings "Draw" und nicht StretchDraw. Ich hab ihn nur etwas angepasst, damit auch die neuen Maße berücksichtigt werden.
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 . . . 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:
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. |
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:
Entschuldigt bitte den überflüssigen Thread...vielleicht kann ja wenigstens später noch wer was damit anfangen :oops:
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); Man liest sich, Stanlay :hi: |
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 09:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz