Laden...

stdole.StdPicture sauber abspeichern

Erstellt von TOM_MUE vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.838 Views
TOM_MUE Themenstarter:in
200 Beiträge seit 2004
vor 16 Jahren
stdole.StdPicture sauber abspeichern

Hallo @all,

ich versuche gerade für eine Übersicht von Images, die in Visual Studio ( 2005/2008 ) für CommandControls verwendet werden können eine Übersicht zu erstellen. Für diese Übersicht initialisiere ich mit ein Picture vom Typ "stdole.StdPicture" und versuche es dann mit transparenten hintergrund abzuspeichern. Mein Code dazu sieht so aus (ist nur ein Ausschnitt):


...
CommandBarButton commandBarButton = tempCommand.AddControl(commandBar, 1) as CommandBarButton;

            stdole.StdPicture picture = commandBarButton.Picture;

            using (Image image = Support.IPictureDispToImage(picture))
            {
                using (Bitmap myBitmap = new Bitmap(image,16,16))
                {
                    myBitmap.MakeTransparent();

                    myBitmap.Save(@"C:\imageII.png", ImageFormat.Png);
                }
            }

Leider ist das Ergebins alles andere als befriedigend. Wie man an dem folgenden Bild sehen kann, ist das Smiley ziemlich ausgefranzt dargestellt.

Der Hintergrund wird nur teilweise transparent gezeichnet. Bei manchen Images werden aber durch die Transparenz schwarze Schrift-Teile im Image transparent gezeichnet. Was zur Folge hat, das man die Schrift nicht mehr als Schrift sondern nur noch als Klumpen erkennt.
Nun muss ich noch dazu erwähnen, das es in dem Object commandBarButton noch eine eigenschaft mit dem Namen Mask gibt. Diese Maske ist praktisch der Deckel für das Image, der Visual Studio anzeigt, in welchem Bereich das Image transparent, und in welchem es nicht Transparent gezeichnet werden soll. Das geschieht mit der Farbe Schwarz.
Visual Studio zeichnet mit beiden werten das Image in einer sehr sehr guten Qualität. Siehe dieses Bild:

Nur noch mal zur Verdeutlichung der Ausgangssituation. Ich zeichne oder erstelle das Image das in Visual Studio verwendet wird nicht selbst. Visual Studio holt sich dieses Image aus einer eigenen DLL. Ich gebe nur über einen Index an, welches Image verwendet werden soll. Somit kann ich die das Image nicht beeinflussen. Für mich ist es wichtig das ich das Image in der richtigen Art mit .NET abspeicher, damit es nicht so ausgefranzt ausschaut. beim Speichern denke ich, mache ich einfach noch Fehler?!

Kann mir da jemand auf die Sprünge helfen?

Besten Dank
TOM_MUE

D
78 Beiträge seit 2007
vor 16 Jahren

Versuchs mal ohne "MakeTransparent".

TOM_MUE Themenstarter:in
200 Beiträge seit 2004
vor 16 Jahren

Hallo David_pd,

nun das würde zur Folge haben das midestens der Hintergrund ganz in Schwarz abgespeichert werden würde.

Aber danke für Deine Hilfe!

Gruß
TOM_MUE

Hinweis von herbivore vor 10 Jahren

Hier zur Sicherheit nochmal das Bild des Icons in Visual Studio