Laden...

UserControl transparent machen

Erstellt von Melanie28 vor 10 Jahren Letzter Beitrag vor 10 Jahren 5.932 Views
Thema geschlossen
M
Melanie28 Themenstarter:in
8 Beiträge seit 2013
vor 10 Jahren
UserControl transparent machen

Hallo,

seit einigen Tagen versuche ich ein Usercontrol Transparent zu machen leider ohne Erfolg.

Wer kann mir sagen was ich hier falsch mache?
diesen Code habe ich im Internet gefunden:



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace WindowsFormsApplication1
{
    public partial class Shape : UserControl
    {
        public Shape()
        {
            InitializeComponent();
            SetStyle(ControlStyles.SupportsTransparentBackColor, true);
            this.BackColor = Color.Transparent;

        }

    }
}

danke für eure Hilfe

meli

R
212 Beiträge seit 2012
vor 10 Jahren

Hast du schonmal den TransparenceyKey auf die Farbe auf z.B Magenta(255,0,255) und dann das Hintergrundbild der UserControl dementsprechend anzupassen.

M
Melanie28 Themenstarter:in
8 Beiträge seit 2013
vor 10 Jahren

Hallo Robin0,

TransparenceyKey höre ich zum ersten mal. Wo lege ich das fest und was genau muss ich damit machen?

gruß
meli

R
212 Beiträge seit 2012
vor 10 Jahren

Du gehst auf deine Form/UserControl entweder Rechtslkick Eigenschaften, oder (STRG+W,P)
Dann geht du auf das Attribut TransparenceyKey und legst die Farbe fest die Deine Form/UserControl durchsichtig macht.

Das bedeutet wenn im Hintergrundbild deiner Form/UserControl eine stelle der Farbe des TransparenceyKey Entspricht, wird deine Form/userConrol an dieserstelle durchsichtig.

M
Melanie28 Themenstarter:in
8 Beiträge seit 2013
vor 10 Jahren

Hallo,

bei mir ist die Attribut TransparenceyKey unter Eigenschaften nicht zu finden.
hmmmm 😦

gruß
meli

R
212 Beiträge seit 2012
vor 10 Jahren

Stimmt, hab nachgeschaut gibt es nur bei der Form ansich sorry dann kann ich dir wohl doch nich helfen.

4.942 Beiträge seit 2008
vor 10 Jahren

Hallo meli,

WinForms und Transparenz ist ein etwas schwieriges Thema und funktioniert auch nur gut für Windows (Forms), und für Controls gibt es doch arge Probleme, s.a.
Problem mit transparentem Control
Tranzparenze Controls?!
SplashScreen: Echte Transparenz

5.658 Beiträge seit 2006
vor 10 Jahren

Hi Melanie28,

seit einigen Tagen versuche ich ein Usercontrol Transparent zu machen leider ohne Erfolg.

Einer der ersten Treffer bei Google ist Five steps for creating a transparent user control. Hast du das ausprobiert?

Christian

Weeks of programming can save you hours of planning

M
Melanie28 Themenstarter:in
8 Beiträge seit 2013
vor 10 Jahren

na dann war doch das alte VB6 wesentlich besser oder?

wenn ich nicht einmal einen Shape-rechteckig anlegen kann, was ist dann neu an der .Net Sprache?

meli

P
660 Beiträge seit 2008
vor 10 Jahren

wenn ich nicht einmal einen Shape-rechteckig anlegen kann, was ist dann neu an der .Net Sprache?

FormCutter

mit WPF wird das ganze nochmal auf die spitze getrieben.
Und .Net ist nur ein Framework! (ein Wrapper um die WinApi wenn man es genauer nimmt)

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

M
Melanie28 Themenstarter:in
8 Beiträge seit 2013
vor 10 Jahren

Einer der ersten Treffer bei Google ist
>
. Hast du das ausprobiert?

Christian,

danke für deine hilfe super das hat geklappt, jetzt frage ich mich, warum auf der seite von Microsoft nicht so beschrieben wird statt nur die Zwei Zeilen anzugeben:


SetStyle(ControlStyles.SupportsTransparentBackColor, true);
            this.BackColor = Color.Transparent;

weis du wie ich da auch eine Rechteck zeichnen kann?
also, ein transparentes Rechteck mit schwarzer Rahmen.

meli

2.298 Beiträge seit 2010
vor 10 Jahren

Durch überschreiben der OnPaint Methode. Die EventArgs stellen ein Graphics-Objekt bereit. Mit diesem kannst du mittels Graphics.DrawRectangle ein Rechteck zeichnen.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

5.658 Beiträge seit 2006
vor 10 Jahren

na dann war doch das alte VB6 wesentlich besser oder?

Was hat das denn mit dem Thema zu tun? Niemand hält dich davon ab, weiterhin in VB 6 zu entwickeln. Und wahrscheinlich wird sich niemand hier auf eine Diskussion einlassen, ob eine Jahrzehnte alte Technologie besser ist als eine moderne Technologie.

wenn ich nicht einmal einen Shape-rechteckig anlegen kann, was ist dann neu an der .Net Sprache?

Was genau möchtest du Shape-rechteckig anlegen? Ich dachte es ging um Transparenz? Wenn dir dir Möglichkeiten von Windows Forms nicht ausreichen, solltest du dir mal WPF anschauen!

Christian

Weeks of programming can save you hours of planning

M
Melanie28 Themenstarter:in
8 Beiträge seit 2013
vor 10 Jahren

Hi Christian,

also, ich möchte einen Rechteck zeichnen mit einem Schwarzen Rahmen und durchsichtig, also der rahmen sollte so dünn wie möglich sein.

meli

5.658 Beiträge seit 2006
vor 10 Jahren

Dafür brauchst du kein eigenes UserControl, dafür gibt es die Graphics.DrawRectangle-Methode. Siehe auch Draw a rectangle using Winforms.
Christian

Weeks of programming can save you hours of planning

M
Melanie28 Themenstarter:in
8 Beiträge seit 2013
vor 10 Jahren

Hi Christian,

ich will ja nicht das Shape irgend wo auf dem Form Zeichnen, sondern mehrmals auf dem Form an bestimmte Positionen platzieren, und da ist es schon sinnvoll, wenn ich das als usercontrol hätte, da ich sie auch evtl. verschieben muss.

gruß
meli

5.658 Beiträge seit 2006
vor 10 Jahren

Dann mußt du das Rechteck im UserControl zeichnen. Wo liegt das Problem?

Weeks of programming can save you hours of planning

M
Melanie28 Themenstarter:in
8 Beiträge seit 2013
vor 10 Jahren

genau das bekomme ich nicht hin. 😃
wahrscheinlich liegt das daran, das mein usercontrol transparent ist... aber es soll ja ein rahmen sein.

gruß
meli

S
145 Beiträge seit 2013
vor 10 Jahren

Ich würde auf der Form zeichnen, damit tuste dich um einiges leichter denke ich.

Halte dir einfach in einer Liste der Rectangles welche du zeichnest.
Ansonsten bräuchtest du ja eh auch ne Liste für deine Controls (je nach Fenster ev. ControlCollection zu "unaufgeräumt")

Rectangle selbst bietet schon Methoden zum prüfen ob ein Point innerhalb eines Rectangles liegt (müsste glaube Contains Methode sein).

Im Prinzip tust du dir damit sogar leichter, du hast direkt die Mauskoordinaten zugeschnitten auf deiner Form
Über die UserControl Mausereignisse hast du die Mauskoordinaten innerhalb dieses Controls, weshalb ev. Umrechnungen nötig sind.

Ansonsten ist allgemein Transparents auf Controls immer rechenintensiver.

Hinweis von gfoidl vor 10 Jahren

Zusammen mit [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox) und [Tutorial] Gezeichnete Objekte mit der Maus verschieben wurde jetzt wohl alles für die Lösung des Problems erforderliche erwähnt.

Thema geschlossen