Diskuze: Transparentní barva

C# .NET .NET (C# a Visual Basic) Transparentní barva American English version English version

Avatar
dirtyjobs
Člen
Avatar
dirtyjobs:

Ahoj, nevím si rady s tím, jak nastavit transparentní barvu pro materiál.

BitmapImage img = new BitmapImage();
ImageBrush imgBrush = new ImageBrush(img);
DiffuseMaterial imgMaterial = new DiffuseMaterial();
imgMaterial.Brush = imgBrush;
GeometryModel3D geometrymodel = new GeometryModel3D();
geometrymodel.Material = imgMaterial;
 
Odpovědět 24.4.2015 11:00
Avatar
Jurajs
Člen
Avatar
Odpovídá na dirtyjobs
Jurajs:

Ahoj, takhle nějak myslím:

public void InitializeMyForm()
 {
    this.BackColor = Color.Red;
    // Make the background color of form display transparently.
    this.TransparencyKey = BackColor;
 }

Nejsem si jistý

 
Nahoru Odpovědět  +1 24.4.2015 11:10
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Jurajs
dirtyjobs:

Pro formulář to určitě funguje, já zapomněl napsat, že to dělám ve WPF.

 
Nahoru Odpovědět 24.4.2015 11:27
Avatar
Jurajs
Člen
Avatar
Odpovídá na dirtyjobs
Jurajs:

Aha...ja myslel, že to dělaš čistě v C# :D

 
Nahoru Odpovědět 24.4.2015 11:42
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Jurajs
dirtyjobs:

XAML mě zatím moc neláká, takže to píšu čistě v kódu.

 
Nahoru Odpovědět 24.4.2015 12:08
Avatar
Odpovídá na dirtyjobs
Michael Škrášek:

Takhle je to ve WPF:

this.AllowsTransparency = true;
this.WindowStyle = WindowStyle.None;

this.Background = new SolidColorBrush(Color.FromArgb(200, 0, 0, 0));
// nebo this.Background = Brushes.Transparent;
Nahoru Odpovědět  +1 24.4.2015 14:03
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na dirtyjobs
Michael Škrášek:

Ale pokud nechceš okno ale třeba Rectangle tak takhle:

Rectangle rec = new Rectangle();
rec.Fill = new SolidColorBrush(Color.FromArgb(200, 0, 0, 0)); //černé průhledné pozadí
//nebo rec.Fill = Brushes.Transparent;
Nahoru Odpovědět  +1 24.4.2015 14:06
Proč to dělat složitě, když to jde jednoduše.
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Michael Škrášek
dirtyjobs:

Objekty 3DView mají asi vyšší prioritu, takže tam požadovaná barva není transparentní, navíc bych rád klasické okno. Zkusím GetPixel,SetPixel na levelu okna, jinak bude grafika hranatá. :)

 
Nahoru Odpovědět 24.4.2015 14:38
Avatar
Odpovídá na dirtyjobs
Michael Škrášek:

A toto by fungovat nemohlo:

DiffuseMaterial material = new DiffuseMaterial();
material.Brush = new SolidColorBrush(Color.FromArgb(200, 0, 0, 0));
GeometryModel3D model = new GeometryModel3D();
model.BackMaterial = material;
Nahoru Odpovědět 24.4.2015 15:40
Proč to dělat složitě, když to jde jednoduše.
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Michael Škrášek
dirtyjobs:

Jo to funguje, ale dělá to něco jiného.

 
Nahoru Odpovědět 24.4.2015 17:18
Avatar
Odpovídá na dirtyjobs
Michael Škrášek:

A co bys přesně chtěl aby to dělalo - jak to vypadalo?

Nahoru Odpovědět 24.4.2015 17:20
Proč to dělat složitě, když to jde jednoduše.
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Michael Škrášek
dirtyjobs:

Takhle to nějak vypadá.:)

Editováno 24.4.2015 17:33
 
Nahoru Odpovědět 24.4.2015 17:32
Avatar
Odpovídá na dirtyjobs
Michael Škrášek:

A chceš aby byla průhledná ta ruka (či co to je), tak teda chceš aby ruka měla průhlednou texturu:

http://stackoverflow.com/…bitmap-image

pokud jsem to špatně pochopil, tak mě oprav prosím :D

Nahoru Odpovědět 24.4.2015 17:49
Proč to dělat složitě, když to jde jednoduše.
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Michael Škrášek
dirtyjobs:

No pokoušel jsem se nakreslit zbraň, konkrétně to má být brokovnice. Akorát se mi tam nějak moc nehodí ta bílá barva.

 
Nahoru Odpovědět 24.4.2015 18:06
Avatar
Odpovídá na dirtyjobs
Michael Škrášek:

Aha tak ji chceš nastavit na transparent :D, už jsem to pochopil.
Ukaž prosím ještě jak to vypadá, když to nastavíš na:

material.Brush = Brushes.Transparent;
Nahoru Odpovědět 24.4.2015 18:11
Proč to dělat složitě, když to jde jednoduše.
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Michael Škrášek
dirtyjobs:

To nastaví Brush na hodnotu Transparent což je u mě #00FFFFFF

 
Nahoru Odpovědět 24.4.2015 18:23
Avatar
Odpovídá na dirtyjobs
Michael Škrášek:

Jestli to vypadá takhle tak nevim, ale podle tohoto návodu http://xoax.net/…-wpf-with-c/ by to mělo fungovat, tak se aspoň zkuz inspirovat :D

Nahoru Odpovědět 24.4.2015 18:45
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na dirtyjobs
Michael Škrášek:

Jediný rozdíl je v tomto:

DiffuseMaterial material = new DiffuseMaterial(new SolidColorBrush(Color.FromArgb(0, 255, 255, 255)));
GeometryModel3D model = new GeometryModel3D();
model.BackMaterial = material;

a v tom to asi nebude :D, ale za pokus ni nedáš :D

Nahoru Odpovědět 24.4.2015 18:55
Proč to dělat složitě, když to jde jednoduše.
Avatar
Eldan
Člen
Avatar
Eldan:

Dej obrázku té zbraně na pozadí nějakou barvu kterou jinak nepoužíváš a tu nastav jako transparencykey, to by mělo fungovat...

Nahoru Odpovědět 25.4.2015 13:24
Unobfuscated executable == free source code
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 19 zpráv z 19.