![]() |
Probleme mit StretchDraw
Ahoi,
ich habe eine Form angelegt in der man die Bildgröße eines Bitmaps festlegen kann. Um das Image zu verkleinern und auch die Canvas-Zeichenflaeche dachte ich mir, dass das so geht:
Delphi-Quellcode:
Der Compiler spukt mir das aus: "Incompatible types: 'Integer' and 'TBitmap'"
Image1.Canvas.StretchDraw(Rectangle(0,0,StrToInt(edBreite.Text),StrToInt(edHoehe.Text), bmp);
Ich verstehe zwar was Delphi mir damit sagen will, jedoch weiß ich einfach nicht die Lösung. Also ich fänds nett wenn mir mal einer die StretchDraw funktion erklären könnte und mein problem löst. Ich check da garnichts mehr :wall: |
Re: Probleme mit StretchDraw
Windows.
![]() ![]() Fällt dir was auf? Verwende stattdessen einfach die Funktion ![]() und vergiß nicht, daß in deinem Code noch eine schließende Klammer fehlt. :zwinker: |
Re: Probleme mit StretchDraw
Ja soweit geht das nur ich habe jetzt sozusagen 2 Images. Man sieht das Bild in normaler Größe und in klein..
Muss ich das Image löschen und dann wieder erzeugen oder wie läuft das ab?
Delphi-Quellcode:
bmp := TBitmap.Create;
bmp := Form1.imgZeichenflaeche.Picture.Bitmap; with Form1.imgZeichenflaeche do begin Width := StrToInt(edBreite.Text); Height := StrToInt(edHoehe.Text); Canvas.StretchDraw(Rect(0,0,StrToInt(edBreite.Text),StrToInt(edHoehe.Text)), bmp); end; |
Re: Probleme mit StretchDraw
Ich gehe mal anhand des Namens davon aus, dass imgZeichenflaeche ein TImage ist. Das ist wie in einem anderen Thread bereits gesagt eigentlich nicht dazu gedacht, dass man darauf "herummalt". Wieso zeichnest Du das Ursprungsbild nicht gestretched auf bmp und weist diese dann dem Image zu?
[edit] Bachstuben verwechselt :stupid: [/edit] |
Re: Probleme mit StretchDraw
Delphi-Quellcode:
Die zweite Zeile macht bestimmt auch nicht daß, was du geplant hast und von dem Speicherleck ganz zu schweigen.
bmp := TBitmap.Create;
bmp := Form1.imgZeichenflaeche.Picture.Bitmap; ... Anscheinend hast du auch kein bmp.Free verwendet, denn sonst gäbe es noch eine "schöne" Nebenwirkung. :stupid: Wenn schon, dann
Delphi-Quellcode:
aber eigentlich ist diese Zeil eh falsch/unnötig, also laß diese zweite Zeile einfach mal weg.
bmp.Assign(Form1.imgZeichenflaeche.Picture.Bitmap); _
|
Re: Probleme mit StretchDraw
Jaja, ignoriert mich einfach mal wieder *grmpf*. :evil:
[edit] Nochmal: ich persönlich würde das eher so machen
Delphi-Quellcode:
[/edit]
var bmp: TBitmap;
begin bmp := TBitmap.Create; try bmp.Width := StrToIntDef(edtBreite.Text,150); bmp.Height := StrToIntDef(edtHoehe.Text,150); bmp.Canvas.StretchDraw(Rect(0,0,bmp.Width,bmp.Height),Image.Picture.Graphic); Image.Picture.Assign(bmp); finally bmp.Free; end; end; |
Re: Probleme mit StretchDraw
Ja danke erstmal, wobei es immernoch nicht funktioniert. Die Größe ändert sich zwar aber das Bild ist weiß. Es geht ja darum, dass in dem Bitmap ne Grafik ist die mit verkleinert werden soll, ich dachte eigentlich das sich das Bild der Image-Komponente anpasst. Wie realisiere ich das denn?
|
Re: Probleme mit StretchDraw
Wenn ich Dich richtig verstanden habe, musst Du nur die Eigenschaften Stretch und Proportional der Image-Komponente auf true stellen. Das erspart Dir das eigene Skalieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14: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