Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   TBitBtn: Bild skalieren mit BitBlt (https://www.delphipraxis.net/155832-tbitbtn-bild-skalieren-mit-bitblt.html)

messie 9. Nov 2010 18:21


TBitBtn: Bild skalieren mit BitBlt
 
Moin,

ich habe gerade das Problem, dass ich ein Bild auf einem BitBtn nicht skaliert bekomme.

Code:
BM = new TImage(Form1);
BM->Picture->Bitmap = BitBtn1->Glyph;
BitBlt(BitBtn1->Handle,0,0,Floor(BM->Width/3),Floor(BM->Height/3),BM->Canvas->Handle,0,0,SRCCOPY);
Ich habe auch probiert, das TImage über stretch zu verkleinern, aber das wird ja anscheinend nur anders gezeichnet ohne es wirklich zu verkleinern.

Sieht jemand den Fehler?

Danke, Messie

P.S. gibt es nur noch Codetags für Delphi?

Bummi 9. Nov 2010 18:37

AW: TBitBtn: Bild skalieren mit BitBlt
 
Delphi-Quellcode:
var
  bmp:TBitmap;
begin
  bmp:=TBitmap.Create;
  bmp.Width :=trunc(BitBtn1.Glyph.Width/3);
  bmp.Height := Trunc(BitBtn1.Glyph.Height/3);
  BitBlt(bmp.Canvas.Handle,0,0,bmp.Width,bmp.Height,BitBtn1.Glyph.Canvas.Handle,0,0,SRCCOPY);
  BitBtn1.Glyph.Assign(bmp);
  bmp.Free;
end;


und die Tags
'['delphi']'

Neutral General 9. Nov 2010 23:45

AW: TBitBtn: Bild skalieren mit BitBlt
 
Es gibt übrigens auch noch die Funktion MSDN-Library durchsuchenStretchBlt. Die ist da wohl eventuell etwas geeigneter ;)

messie 10. Nov 2010 08:18

AW: TBitBtn: Bild skalieren mit BitBlt
 
Zitat:

Zitat von Neutral General (Beitrag 1060675)
Es gibt übrigens auch noch die Funktion MSDN-Library durchsuchenStretchBlt. Die ist da wohl eventuell etwas geeigneter ;)

Hmm, trotzdem bekomme ich hinterher kein Bild, also es geht irgendwo verloren :?

Code:
Graphics::TBitmap *BM;
      BM = new Graphics::TBitmap;

      StretchBlt(BM->Canvas->Handle,0,0,Floor(sBitBtn1->Glyph->Width/3),Floor(sBitBtn1->Glyph->Height/3),sBitBtn1->Glyph->Handle,0,0,sBitBtn1->Width,sBitBtn1->Height,SRCCOPY);
      sBitBtn1->Glyph->Assign(BM);
Grüße, Messie

Neutral General 10. Nov 2010 08:20

AW: TBitBtn: Bild skalieren mit BitBlt
 
Müsste es nicht sBitBtn1->Glyph->Canvas->Handle heißen?

Außerdem solltest du die Größe von BM vorher auf die gewünschte Größe setzen.

messie 10. Nov 2010 08:41

AW: TBitBtn: Bild skalieren mit BitBlt
 
Zitat:

Zitat von Neutral General (Beitrag 1060696)
Müsste es nicht sBitBtn1->Glyph->Canvas->Handle heißen?

Außerdem solltest du die Größe von BM vorher auf die gewünschte Größe setzen.

Danke, das hatte ich eigentlich von der function erwartet. Immerhin kommt jetzt etwas, das hat aber das falsche Format. Sieht so aus, als würde mein 64px-Bitmap von dem Button gestreckt.

Edit: klar, wenn man statt glyph->width BitBtn->Width angibt


Grüße, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 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