Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
15. Apr 2011
SetStretchBltMode
und Jupp, hast richtig verstanden ... jedes Pixel bekommt den Durchschnitt der Pixel-Anteile, welche in ihm liegen würden.
faule RedBox
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
15. Apr 2011
Und die Art des Bildes.
Bilder mit wenige Struktur, wenig Farben und scharfen Farbgrenzen sehen mit der einen Methode ohne Kantenglättung schonmal besser (schärfer) aus,
wärend deteilreiche Fotos mit Kantenglättung/Pixelverrechnung nicht so verpixelt wirken.
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Apr 2011
Was ist denn "bedingt"?
StretchDraw kopiert nur ganze Pixel (läßt also beim Verkleinern einfach welche web und beim Vergrößern werden welche mehrfach gezeichnet)
und StretchBlt verrechnet die Pixel miteinander.
Dafür sind Funktionen/Berechnungen wie in StretchDraw dann natürlich schneller, als aufwändigere Varianten, wie StretchBlt. (falls es mal auf Quantität ankommt und nicht auf...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Apr 2011
Wenn das Bild verkleinert wurde, dann ist das verkleinerte Bild ja nun kleiner, als das was geladen wurde ... also noch die Größe des Glyph an die Größe des verkleinerten Bildes anpassen. :angle:
Jetzt noch statt des StretchDraw das StretchBlt von DeddyH rein und man hat mit wenig Code ein wunderschönes Bild.
Wenn jetzt die Größe nicht gefällt, dann kann man ja die Berechnung von X und Y...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Apr 2011
BitBtn1.Glyph.LoadFromFile('E:\MaskLight\Programm\Masken\Achsen_MKS.bmp');
BitBtn1.Glyph.Canvas.StretchDraw(Rect(0, 0, BitBtn1.Width - 10, BitBtn1.Height - 10), BitBtn1.Glyph);
BitBtn1.Glyph.Width := BitBtn1.Width - 10;
BitBtn1.Glyph.Height := BitBtn1.Height - 10;
// oder
X := BitBtn1.Width - 10;
Y := BitBtn1.Height - 10;...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Apr 2011
Hmm, ich glaub ich hab da noch eine versteckte Referenzzählung gefunden, welches es intern gibt. :gruebel:
Bin aber dennoch mal gespannt, ob das Weglassen von .Free etwas bringt.
Ansonsten kannst du bmp2 und Glyph mal in einer Datei speichern (SaveToFile) und nachsehn wie die enthaltenen Bilder aussehn.
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Apr 2011
Ja, doch du. :tongue:
BitBtn1.Glyph.Assign(bmp2);
...
FreeAndNil(bmp2);
Du weist dem ButtonGlyph die Referenz zu deinem bmp2 zu und gibst danach dieses Objekt frei, da kann ja nix mehr angzeigt wergen. :zwinker:
> Du kannst ja mal probehalber das bmp2.Free; auskommentieren. (bin mal gespannt, ob ich Recht hab :angle2: )
BitBtn1.Glyph.Width und .Height setzen
und dann in...