Entwickler-Ecke

WinForms - Frage zu eigener Form/Design


AlphaCentAlpha - Di 05.02.08 19:55
Titel: Frage zu eigener Form/Design
Hi ich bin relativ neu in C#.

Ich hab mir in Photoshop ein eigenes Design gemacht das eben nicht die form des Standard
Windows Fenster hat. Nun würde ich dieses gern einbinden. Als Hintergrund ist das ja kein Problem aber ich moechte eben das nur mein eigenes Design sichtbar ist, und windows titelleiste und hintergrund transparent sind.

zusätzlich dazu habe ich in der photoshop am rand an den abrundungen so halbtransparente pixel die ich auch gerne ins gui design übernehmen würde ohne das diese weiss werden oder sowas. kann mir einer von euch sagen wie ich dieses eigene design einbinden kann wobei halt alle transparentne stellen in photoshop auch genauso in c# übernommen werden. habe bei google shcon gesucht und leider nichts dazu gefunden.

thx alpha


Kha - Di 05.02.08 21:09

Du hast zwei Möglichkeiten:
  1. Du bleibst bei Winforms und zeichnest ALLES selbst, kannst also keine Controls benutzen. (Wobei du dann gleich das Ganze hardwaregestützt zeichnen könntest, z.B. mit XNA)
  2. Du benutzt WPF, das aber gerade bei sowas mit der Performance einbricht.


mutterholzbein - Di 05.02.08 21:49
Titel: Re: Frage zu eigener Form/Design
user profile iconAlphaCentAlpha hat folgendes geschrieben:
Hi ich bin relativ neu in C#.

Ich hab mir in Photoshop ein eigenes Design gemacht das eben nicht die form des Standard
Windows Fenster hat. Nun würde ich dieses gern einbinden. Als Hintergrund ist das ja kein Problem aber ich moechte eben das nur mein eigenes Design sichtbar ist, und windows titelleiste und hintergrund transparent sind.
...
thx alpha


hi user profile iconAlphaCentAlpha,

wie user profile iconKhabarakh das schon richtig gesagt hat eignet sich, wenn auch u.u mit performance-einbussen, am besten die wpf bzw. xaml für solche geschichten! ich kann dir empfehlen dir das [url=http://www.microsoft.com/germany/expression/products/overview.aspx?key=blend]ms-expression-blend[/url] als trial-version zu laden u nebenbei nochn paar [url=http://www.microsoft.com/germany/msdn/webcasts/serien/MSDNWCS-0710-02.mspx]microsoft-webcasts[/url] zu dem thema durch zu arbeiten, und schon kannste alle die funktionen/designs einer "selbstgebastelten" gui nutzen.

der code der hierbei zur anwendung kommt ist fürs design xaml und für die logik c# also genau das was du suchst...


greetz mhb

:wave:

Moderiert von user profile iconNarses: Farb-Tag entfernt


AlphaCentAlpha - Di 05.02.08 22:43

also das ist mir viel zu aufwändig :P

ich hatte eigentlich vorgehabt das ich dem bild ne hintergrund farbe gebe die ich mal x nenne. und dann einfach beim tranparency key farbe x einstelle. nur das funktioniert irgendwie nicht ich seh da immer noch mein design mit der farbe x als viereck drum.


mutterholzbein - Mi 06.02.08 00:09
Titel: ree
user profile iconAlphaCentAlpha hat folgendes geschrieben:
also das ist mir viel zu aufwändig :P

ich hatte eigentlich vorgehabt das ich dem bild ne hintergrund farbe gebe die ich mal x nenne. und dann einfach beim tranparency key farbe x einstelle. nur das funktioniert irgendwie nicht ich seh da immer noch mein design mit der farbe x als viereck drum.

...
hmh,
also ganz ohne aufwand lässt sich dein wunsch nicht bewerkstelligen!
allerdings ist der oben geschilderte weg, im vergleich zu früheren methoden SIMPLE! du machst mit expresion-blend das design, speicherst ab, lädst das projekt ins VS (mindestens VS-2005) und schreibst den code für die anwendung...

ALLERDINGS: solltest du in ms-expression-blend für schliessen-buttons usw., gleich in den eventhandler-eigenschaften die zugehörigen events reinschreiben; falls du dich nicht noch zusätzlich mit xaml beschäftigen willst! denn im c-sharp code taucht davon im cs-projekt nicht mehr viel auf.
also für das bsp mit dem schliessen-button wäre das [/color]this.Close()[color=darkred]
ABER OHNE ABSCHLIESSENDES ;! das wird in expr.-blend in xaml-code eingebettet...

jedenfalls ist das die einfachste,schnellste und auch effektivste methode!

ps.
du kannst das ja auch mal mit GDI, GDI+ oder via DirectX funktionen versuchen zu lösen ;)
wirst sehen das, dass immernoch um welten schwerer ist als mein weg.
allerdings gibts bestimmt auch noch einige andere; in welche ich aber (noch) nicht involviert bin...

greetz mhb

:wave:

Moderiert von user profile iconNarses: Farb-Tag nochmal entfernt :|


Kha - Mi 06.02.08 09:55

user profile iconAlphaCentAlpha hat folgendes geschrieben:
ich hatte eigentlich vorgehabt das ich dem bild ne hintergrund farbe gebe die ich mal x nenne. und dann einfach beim tranparency key farbe x einstelle.
Das funktioniert natürlich auch, du schrobst in deinem ersten Posting aber etwas von halbtransparenten Pixeln!
Hier mal ein kurzes Beispiel, dass es wirklich funktioniert:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public Form1()
    {
      FormBorderStyle = FormBorderStyle.None;
      TransparencyKey = Color.Fuchsia;

      InitializeComponent();
    }

    void Form1_Paint(object sender, PaintEventArgs e)
    {
      e.Graphics.FillRectangle(Brushes.Fuchsia, e.ClipRectangle);
      e.Graphics.FillEllipse(new SolidBrush(BackColor), e.ClipRectangle);
    }


AlphaCentAlpha - Mi 06.02.08 18:26

also irgendwie habt ihr mich glaube ich nicht verstanden :P
deswege hier einfach mal meine c# datei. es muss nur noch das backgroundimage an das enthaltene bild angepasst werden dann seht ihr mein problem.
ich kriege die pixel da einfach nicht so umgesetzt.


Kha - Mi 06.02.08 23:56

Funktioniert doch :shock: . Oder was genau willst du erreichen :?:


AlphaCentAlpha - Do 07.02.08 17:09

ja du siehst doch diesen rosa rand! den will ich eben nicht haben. bzw. wenn dann so das wirklich der hintergrund vom desktop durchscheint und nicht diese hässliche rosa farbe ^^.


Kha - Fr 08.02.08 13:08

Wenn du keine Halbtransparennz verwenden willst, musst du natürlich erreichen, dass du einen scharfen Übergang von deiner Form-Grafik zum Fuchsia-Hintergrund hast, es darf nirgendwo eine Mischfarbe entstehen. Frag mich aber nicht, wie man das in PS macht :nixweiss: .