Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
dirtyjobs
Člen
Avatar
dirtyjobs:24.4.2015 11:00

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:24.4.2015 11:10

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
24.4.2015 11:10
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Jurajs
dirtyjobs:24.4.2015 11:27

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:24.4.2015 11:42

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:24.4.2015 12:08

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:24.4.2015 14:03

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
24.4.2015 14:03
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
Odpovídá na dirtyjobs
Michael Škrášek:24.4.2015 14:06

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
24.4.2015 14:06
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Michael Škrášek
dirtyjobs:24.4.2015 14:38

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:24.4.2015 15:40

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
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Michael Škrášek
dirtyjobs:24.4.2015 17:18

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:24.4.2015 17:20

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

Nahoru Odpovědět
24.4.2015 17:20
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Michael Škrášek
dirtyjobs:24.4.2015 17:32

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:24.4.2015 17:49

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
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Michael Škrášek
dirtyjobs:24.4.2015 18:06

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:24.4.2015 18:11

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
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
dirtyjobs
Člen
Avatar
Odpovídá na Michael Škrášek
dirtyjobs:24.4.2015 18:23

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:24.4.2015 18:45

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
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
Odpovídá na dirtyjobs
Michael Škrášek:24.4.2015 18:55

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
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
Eldan
Člen
Avatar
Eldan:25.4.2015 13:24

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.