2009-03-10 5 views
1

j'écrire du code pour générer des images - essentiellement j'ai une image source qui est large et comprend des régions transparentes.redimensionnement d'une image avec canal alpha

J'utilise GDI + pour ouvrir cette image et ajouter des objets supplémentaires.

Ce que je veux faire ensuite est de sauver cette nouvelle image beaucoup plus petite, donc j'ai utilisé le constructeur Bitmap qui prend un objet source d'image et une hauteur et la largeur, puis enregistré que. Je m'attendais à ce que le canal alpha soit lissé comme les canaux de couleur, mais cela ne s'est pas produit - il a résulté en quelques pixels semi-transparents, mais dans l'ensemble, il est très blocable. Ce qui donne?

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: Je pense que ce que je veux est SuperSampling, comme ce que Paint.NET ne lorsqu'il est réglé sur « meilleure qualité »

Répondre

2

Dessine l'image sur la nouvelle image au lieu de créer la nouvelle image de l'image .

Créez une image bitmap vide en spécifiant simplement la taille, puis utilisez la méthode Graphics.FromImage pour créer un objet Graphics pour l'image bitmap. Utiliser la méthode DrawImage pour dessiner l'image sur la nouvelle bitmap.

Il existe des propriétés telles que Interpolationmode et PixelOffsetMode dans l'objet Graphics que vous pouvez utiliser pour contrôler la façon dont l'image est redimensionnée et dessinée.

+0

SmoothingMode a aidé un groupe aussi. THX. – Hafthor