AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Probleme mit StretchDraw
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit StretchDraw

Ein Thema von SunSet · begonnen am 11. Mai 2010 · letzter Beitrag vom 11. Mai 2010
Antwort Antwort
SunSet

Registriert seit: 1. Mär 2010
42 Beiträge
 
Delphi 7 Enterprise
 
#1

Probleme mit StretchDraw

  Alt 11. Mai 2010, 15:10
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:
Image1.Canvas.StretchDraw(Rectangle(0,0,StrToInt(edBreite.Text),StrToInt(edHoehe.Text), bmp); Der Compiler spukt mir das aus: "Incompatible types: 'Integer' and 'TBitmap'"
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Probleme mit StretchDraw

  Alt 11. Mai 2010, 15:14
Windows.MSDN-Library durchsuchenRectangle
Delphi-Referenz durchsuchenTCanvas.Rectangle
Fällt dir was auf?

Verwende stattdessen einfach die Funktion Delphi-Referenz durchsuchenRect
und vergiß nicht, daß in deinem Code noch eine schließende Klammer fehlt.
$2B or not $2B
  Mit Zitat antworten Zitat
SunSet

Registriert seit: 1. Mär 2010
42 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Probleme mit StretchDraw

  Alt 11. Mai 2010, 15:25
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;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Probleme mit StretchDraw

  Alt 11. Mai 2010, 17:24
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 [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: Probleme mit StretchDraw

  Alt 11. Mai 2010, 17:36
Delphi-Quellcode:
bmp := TBitmap.Create;
bmp := Form1.imgZeichenflaeche.Picture.Bitmap;
...
Die zweite Zeile macht bestimmt auch nicht daß, was du geplant hast und von dem Speicherleck ganz zu schweigen.
Anscheinend hast du auch kein bmp.Free verwendet, denn sonst gäbe es noch eine "schöne" Nebenwirkung.

Wenn schon, dann
bmp.Assign(Form1.imgZeichenflaeche.Picture.Bitmap); _ aber eigentlich ist diese Zeil eh falsch/unnötig, also laß diese zweite Zeile einfach mal weg.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: Probleme mit StretchDraw

  Alt 11. Mai 2010, 17:39
Jaja, ignoriert mich einfach mal wieder *grmpf*.

[edit] Nochmal: ich persönlich würde das eher so machen
Delphi-Quellcode:
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;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
SunSet

Registriert seit: 1. Mär 2010
42 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Probleme mit StretchDraw

  Alt 11. Mai 2010, 18:50
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?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

Re: Probleme mit StretchDraw

  Alt 11. Mai 2010, 19:15
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 04:59 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