2009-03-10 20 views
1

I einige Codes schreiben Bilder zu erzeugen, - im Wesentlichen habe ich ein Quellbild, das groß ist, und transparenten Bereich umfasst.ein Bild mit Alphakanal Ändern der Größe

verwende ich GDI +, das Bild zu öffnen und weitere Objekte hinzuzufügen.

Was ich will als nächstes zu tun ist dieses neue Bild zu speichern viel kleiner, so habe ich das Bitmap Konstruktor, der eine Quelle Image-Objekt und eine Höhe und Breite nimmt, sparte dann die.

Ich habe erwartet, dass der Alpha-Kanal wie die Farbkanäle geglättet wird, aber das ist nicht passiert - es hat zu ein paar halbtransparenten Pixeln geführt, aber insgesamt ist es sehr blockig. Was gibt?

Using img As New Bitmap("source100x100.png") 
''// Drawing stuff 
Using simg As New Bitmap(img, 20, 20) 
    simg.Save("target20x20.png") 
End Using 
End Using 

Edit: Ich denke, was ich will Supersampling ist, wie das, was Paint.NET ist, wenn auf „beste Qualität“

Antwort

2

das Bild auf dem neuen Bitmap Zeichnen stattdessen die neue Bitmap aus dem Bild zu schaffen, .

eine leere Bitmap erstellen, indem nur die Größe spezifiziert, dann mit dem Verfahren zur Herstellung eines Graphics.FromImageGraphics Objekt für das Bitmap erstellen. Verwenden Sie die Methode DrawImage, um das Bild auf die neue Bitmap zu zeichnen.

Es gibt Eigenschaften wie Interpolationmode und PixelOffsetMode im Objekt Graphics, das Sie verwenden können, um zu steuern, wie das Bild skaliert und gezeichnet wird.

+0

Smoothing auch ein Bündel geholfen. Danke. – Hafthor