auf transparentes Usercontrol zeichnen

17/01/2016 - 18:39 von Wendelin Uez | Report spam
Ich möchte etwas auf ein transparentes UC zeichnen (.print, .line, .circle
etc.) - das geht aber nur mit BackStyle Undurchsichtig.

Der einzige Ausweg, der mir einfàllt, wàre den belegten Bereich des UC
'abzufotografieren' und mit einer Picturebox als Hintergrund des
'transparenten' UC einzufügen und dann auf die PictureBox zu zeichnen, was
bei geschachtelten UCs aber kompliziert werden kann.

Geht's nicht doch einfacher?
 

Lesen sie die antworten

#1 Schmidt
17/01/2016 - 23:38 | Warnen spam
Am 17.01.2016 um 18:39 schrieb Wendelin Uez:
Ich möchte etwas auf ein transparentes UC zeichnen (.print, .line,
.circle etc.) - das geht aber nur mit BackStyle Undurchsichtig.

Der einzige Ausweg, der mir einfàllt, wàre den belegten Bereich des UC
'abzufotografieren' und mit einer Picturebox als Hintergrund des
'transparenten' UC einzufügen und dann auf die PictureBox zu zeichnen,
was bei geschachtelten UCs aber kompliziert werden kann.

Geht's nicht doch einfacher?



Solange man das UserControl als "Windowless" definiert hat,
kann man innerhalb folgendes tun:

'**** in einem UC mit extern gesetztem Windowless = True ****
Option Explicit

Private Sub UserControl_Initialize()
BackStyle = vbTransparent
ClipBehavior = 0
End Sub

Private Sub UserControl_HitTest(X!, Y!, HitResult As Integer)
HitResult = vbHitResultHit
End Sub

Private Sub UserControl_Click()
MsgBox "Click auf: " & Extender.Name
End Sub

Private Sub UserControl_Paint()
Cls
Print "Hello World"
End Sub
'**** Demo-Code Ende ****

Also die (von den Defaults abweichenden) sonstigen UC-Properties
sind in dem Falle nur:
- BackStyle = 0
- ClipBehavior = 0

Wenn die beide auf 0 gesetzt werden, dann klappts im Paint-Event
auch mit den Ausgaben über VB-Drawing-Commands...

Der UserControl_HitTest liefert (so wie er da oben steht),
True auf der gesamten Control-Flàche (gegebenenfalls wàre
das noch einzuschrànken mittels eigenem Code).

Olaf

Ähnliche fragen