Alpha Blending?

  • Themenstarter Themenstarter Paranoxx
  • Beginndatum Beginndatum
Hmm .. also er Teil der vom Picture transparent wird, soll es dann auch auf der Form sein, richtig?

Nun, unter der Annahme dass ich das jetzt richtig verstanden habe, kannst Du folgendes machen (nicht getestet, müsste aber funktionieren).

Du kannst von der Form ein Graphics-Objekt instanzieren. Dieses Graphics-Objekt spiegelt dann die Form wieder. Dort definierst Du einfach einen Bereiche (nimm dazu die Koordinaten Deiner Grafik) und dort legst ein Alpha-Blending drauf. das sollte eigentlich funktionieren.
 
Hallo Norbert,

vielen dank für die Hilfe!
Hört sich jetzt ganz logisch an, muss ich später mal ausprobieren, muss mir dazu mal nochmal deine Links anschaun, vielleicht hilft mir das ja wegen dem AlphaBlending setzen, weiß grad net so recht wie das geht, aber ich test das jetzt einfach mal.

Danke nochmal...

Gruß Paranoxx
 
So da bin ich wieder ;)

Hab es gerade mal getestet und hab erstmal rumprobieren müssen bis es so einigermaßen geklappt hat.
Mein jetziges Problem ist:

Das Bild wird nicht richtig Transparent wie es sein sollte.
Also in dem beispiel Bild ist ein Kreis, unter diesem Bild ist ein kleiner WEICHER Schatten....
Der Kreis wir dargstellt, aber der Schatten wird nicht weich Transparent sondern er wird einfach Schwarz?! Vielleicht war jetzt auch mein ganzer Lösungsansatz falsch.

Hier mal mein Versuch...

Code:
private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
	gra = e.Graphics;
	gra.Clear(Color.FromArgb(0)); // no need - just to make the box neat 'n tidy
	
	ColorMatrix cm = new ColorMatrix();
	cm.Matrix00 = cm.Matrix11 = cm.Matrix22 = cm.Matrix44 = (float)1.0;
	cm.Matrix33 = (float)1.0;	// the matrix is of the form RGBA, where the (4,4)th element rep alpha

	ImageAttributes ia = new ImageAttributes();
	ia.SetColorMatrix(cm);

	gra.DrawImage(ImageBitmap, new Rectangle(0,0,ImageBitmap.Width, ImageBitmap.Height), 0,0,ImageBitmap.Width, ImageBitmap.Height, GraphicsUnit.Pixel, ia);
	pictureBox1.SetBounds(0,0,ImageBitmap.Width,ImageBitmap.Height);
	this.Size = new Size(pictureBox1.Width, pictureBox1.Height);
}


Das Testimage habe ich auch mal beigelegt, es war bei irgendeinem AlphaBlending Source dabei, fand ich recht gut zum testen!
Vielleicht kann mir ja einer einen Tipp geben warum das jetzt nicht geht und warum der Schatten nicht richtig dargestellt wird...wäre sehr Dankbar!

Edit: Achja... TransparencyKey ist auf Color.Black damit der Hintergrund überhaupt mal durchscheint....


Gruß Paranoxx
 

Anhänge

  • test.png
    test.png
    16,7 KB · Aufrufe: 310
Zuletzt bearbeitet von einem Moderator:
Kann mir da jetzt keiner Helfen? Ist mir klar das das vielleicht nicht so ganz einfach ist aber wenigstens nen kleines Beispiel wäre sehr hilfreich!

Danke.
 
Das hab ich bei der Form eingestellt... musste ich wegen dieser zeile(schätze ich mal):
gra.Clear(Color.FromArgb(0));

Wenn ich den Key nicht auf Schwarz mache(Auf der Form) wird halt überhaupt nichts Transparent, aber so is der effekt ja auch nicht wie er sein sollte.
Es sollte so aussehen wie das Bild das ich angefügt habe, aber stattdessen ist der Schatten völlig schwarz und nicht so "weich" im übergang!

Kenn mich da jetzt nich so aus, weiß nicht wie ich es lösen soll :-/
 
Zuletzt bearbeitet von einem Moderator:
Hi,

wollt das grad ausprobieren und hab dann gemerkt das ne pictureBox garkeine Eigenschaft hat die "TransparencyKey" heißt...

@Norbert: Wie mach ich das denn jetzt?
Kenn mich da jetzt leider nich so gut aus, wie ich mit pictureBoxen + transparenz usw. arbeite.

Habe jetzt einfach mach bisschen rumgespielt und versucht rauszukriegen wie das denn jetzt geht, ich habs dann mal über die "ImageAttributes()" versucht und hab das geschrieben:

ia.SetColorKey(Color.FromArgb(0),Color.FromArgb(0));

Das schneidet mir nun aber auch den Schwarzen Schatten weg der ja weich dargestellt sein sollte! *schnief*

Da ich ja nun nich weiß wies geht wäre ich für ne kleine lösung/hilfe dankbar ;)
Ich wär echt froh wenn ich das mal hinkriegen würde, das wär nen Tutorial wert, zumal man dann auch Steuerelemente nutzen könnte nicht so wie bei anderen Hilfen *seufz*

Gruß Paranoxx
 
Hast Dir schon mal von Deiner PictureBox das Graphics-Objekt zurückgeben lassen? Mit dem solltest es eigentlich setzen können.
 
Ich hab das jeztt mal nach deiner anweisung versucht:

private Graphics gfx;
gfx = pictureBox1.CreateGraphics();

gfx hat dann aber keine TransparencyKey eigenschaft, bin also immernoch soweit wie vorher...
 
Zurück