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
Hast du schonmal den TransparenceyKey auf die Farbe auf z.B Magenta(255,0,255) und dann das Hintergrundbild der UserControl dementsprechend anzupassen.
Hallo Robin0,
TransparenceyKey höre ich zum ersten mal. Wo lege ich das fest und was genau muss ich damit machen?
gruß
meli
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.
Hallo,
bei mir ist die Attribut TransparenceyKey unter Eigenschaften nicht zu finden.
hmmmm 😦
gruß
meli
Stimmt, hab nachgeschaut gibt es nur bei der Form ansich sorry dann kann ich dir wohl doch nich helfen.
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
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
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
wenn ich nicht einmal einen Shape-rechteckig anlegen kann, was ist dann neu an der .Net Sprache?
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"
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
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 |
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
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
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
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
Dann mußt du das Rechteck im UserControl zeichnen. Wo liegt das Problem?
Weeks of programming can save you hours of planning
genau das bekomme ich nicht hin. 😃
wahrscheinlich liegt das daran, das mein usercontrol transparent ist... aber es soll ja ein rahmen sein.
gruß
meli
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.
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.