Autor Beitrag
Codex
Hält's aus hier
Beiträge: 2

Win98II / WinMe
D6 Pers
BeitragVerfasst: Do 18.09.03 14:51 
Hallo,

ich habe folgendes Problem:
Ich habe mit der StretchDraw Funktion einen Metafile auf einen Canvas "gemalt". Diese Ausgabe würde ich jetzt gerne noch antialiasen. Ich habe im Netz dazu eine Funktion gefunden, die TBitmaps antialiased.

Nun zum Problem...
Wie kann ich auf den Canvas zugreifen, so dass ich am Ende wieder ein TBitmap bekomme? Bzw Das TBitmap mit den Pixeln füllen, die auf dem Canvas sichtbar sind?

Kurzer Ausschnitt aus meinem Programm:

var bmp:TBitMap;

ausgabefeld.canvas.draw(0,0,metafile); //schreibt den Metafile auf Canvas
bmp:=TBitMap.create;

// hier irgendwie die Grafik von ausgabefeld.canvas ins TBitMap bekommen !!!!...???

AntiAliasing(bmp); //AntiAliased das bmp - geht aber auch ohne nicht
ausgabefeld.canvas.draw(0,0,bmp); // nochmal drüberzeichnen, diesmal das antialiaste Bitmap

Kann irgendjemand hier helfen, oder bin ich ganz auf dem Holzweg? Ich habe auch schon versucht, den Metafile direkt auf das bmp.canvas zu zeichnen, ging aber nicht -> resultierendes Bitmap war leer...

Vielen Dank
Codex
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Do 18.09.03 15:48 
Hallo,

ein Bitmap erzeugen alleine reicht nicht. Bevor Du darauf zeichnen kannst, solltest Du die Größe des Bitmaps über Width und Height festlegen.

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Do 18.09.03 15:48 
warum mahlst du das metafile nicht auf das bitmap und das bitmap dann auf das canvas :?: ...also von a nach b nach c ...und nicht von a nach c nach b nach c!

_________________
mfg.
mâximôv
Codex Threadstarter
Hält's aus hier
Beiträge: 2

Win98II / WinMe
D6 Pers
BeitragVerfasst: Do 18.09.03 20:56 
Titel: Danke...
@smiegel
ahh...danke! Das war das Problem... Das bmp hatte dann vermutlich die Größe (0,0). Das erklärt auch, warum es immer leer war.
Allerdings ist die AntiAliasing Funktion nicht gut geeignet um die Metafiles zu antialiasen. Genaugenommen ist es gar kein AntAlias sondern nur "Weichzeichnen"...

@maximus
ja genau. So hab ich das jetzt auch gemacht. Nur dass ich zuerst trotzdem das Metafile direkt auf das Canvas zeichne, weil das recht fix geht und der User so schonmal was sieht. Das AntiAliasen dauert ein kurzes Weilchen, ist aber wie gesagt eh nicht gut geeignet für Metafiles. Es sollen ja nur die Kanten weichgezeichnet werden und die das ganze Bild "verwischt" werden.

Muss ich mir wohl doch das SmoothPack von Herbert Hass kaufen, das macht genau das...


Viele Grüße
Codex