AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Icon to Bitmap: StrechDraw schneidet Bereiche ab
Thema durchsuchen
Ansicht
Themen-Optionen

Icon to Bitmap: StrechDraw schneidet Bereiche ab

Ein Thema von Stanlay Hanks · begonnen am 28. Jan 2004 · letzter Beitrag vom 28. Jan 2004
Antwort Antwort
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#1

Icon to Bitmap: StrechDraw schneidet Bereiche ab

  Alt 28. Jan 2004, 17:06
Hallo zusammen! Ihr seht mich wiedermal ratlos. 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

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.
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Icon to Bitmap: StrechDraw schneidet Bereiche ab

  Alt 28. Jan 2004, 17:27
Entschuldigt bitte, aber ich habs grade hinbekommen
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

Man liest sich, Stanlay
  Mit Zitat antworten Zitat
Currywurst

Registriert seit: 17. Nov 2003
11 Beiträge
 
#3

Re: Icon to Bitmap: StrechDraw schneidet Bereiche ab

  Alt 28. Jan 2004, 17:31
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);
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 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