*.ico nach *.bmp
-
Hi,
wie kann man eigentlich ein icon in ein TImage laden (soweit ist das kein problem) und das dann in ein tbitmap umwandeln (so, dass man die größe etc verändern kann)?
In der FAQ steht nur wie man aus einem TBitmap ein TImage macht.
Und wie sieht das ganze mit icons die 64x64pixel groß sind aus?
-
Ungetestet:
Ein neues TBitmap in den gewünschten Abmessungen erzeugen, per TCanvas::CopyRect (oder gleich StretchDraw) den Inhalt des Image-Canvas auf das Bitmap-Canvas übertragen, Bitmap abspeichern oder in Image laden oder was auch immer.
-
Also ungefähr so:
Graphics::TBitmap *Bitmap = new Graphics::TBitmap; Bitmap->Width = Image1->Width; Bitmap->Height = Image1->Height; Bitmap->Canvas->StretchDraw(Rect(0,0, Image1->Width, Image1->Height), Bitmap); Image2->Picture->Bitmap = Bitmap; delete Bitmap;nur geht das nicht. Ich bekomme in Image2 nur ein komplett weises bild.
-
Ist doch logisch, du zeichnest den Inhalt des (leeren) Bitmap auf das Bitmap.

Allerdings stretcht StretchDraw wohl auch nur bei BMPs als Vorlage, Icons werden in Originalgrösse kopiert. Du könntest also genauso CopyRect verwenden.
-
kannst du mir mal ein beispiel zu CopyRect geben, wie man etwas vom einen Image ins andere kopiert?
in der hilfe steht nur, wie man etwas im selben bild kopiert.
-
ZielCanvas->CopyRect(ZielRect, QuellCanvas, QuellRect);
-
danke,
aber jetzt bekomme ich wieder die fehlermeldung, dass man nur bitmaps verändern kann. wobei das icon ja nicht verändert wird, es wird ja nur von dort gelesen.
-
Quelltext?
-
In image1 ist das icon. in image2 soll das bmp.
TRect quelle = Rect(0,0,Image1->Width, Image1->Height); Image2->Canvas->CopyRect(quelle, Image1->Canvas, quelle);
-
Image1->Canvas->Draw(0, 0, Image2->Picture->Graphic); Image1->Picture->Bitmap->SaveToFile("f:\\test.bmp");Diesmal getestet.

-
also da bekomme ich genau den gleichen fehler (dass man nur bitmaps verändern kann)
-
In meinem Beispiel sind Image1 und Image2 im Vergleich zu deinem "vertauscht". Versuch doch mal, zu verstehen, was da jeweils abläuft, dann sollten dir solche Fehler eigentlich selbst auffallen.