German Label-Transparenz

Filippo

Expert
Licensed User
Hallo,

ich habe eine kleine Routine erstellt mit dem man ein Label transparent machen kann.

HTML:
Sub App_Start
  Form1.Show
  SetTransparent("label1","Form1")
  SetTransparent("label2","Form1")
End Sub

Sub SetTransparent(LabelName, frmName)
  Control(LabelName).visible = False
  x=Control(LabelName).left
  y=Control(LabelName).top
  w=Control(LabelName).Width
  h=Control(LabelName).Height
  str=Control(LabelName).Text
  fs=Control(LabelName).FontSize
  fc=Control(LabelName).FontColor
  Control(frmName).DrawString(str,fs,x,y,x+w,y+h,fc)
End Sub
Ich hoffe damit jemanden geholfen zu haben.

Ciao,
Filippo
 

Attachments

klaus

Expert
Licensed User
Hallo Filippo,

Ich habe auch Labels durch DrawString ersetzt, aber komplett.
Ich mache es etwas anders als Du. Ich benütze FErase und FDrawString das ermöglicht den Text zu löschen und durch einen Neuen zu ersetzten was in Deiner Routine leider nicht der Fall ist.

Habe mir erlaubt Dein Beispiel demnach zu ändern.

Grüsse.
 

Attachments

Filippo

Expert
Licensed User
Danke Klaus,

aber deine ist auch "nur" eine Not-Lösung, das beste währ es in die Library FormLib.dll zu implementieren.

Vielleicht macht Erel in diese Richtung auch gerade was.;)

Ciao,
Filippo
 

klaus

Expert
Licensed User
Total einverstanden, es sind NUR Notlösungen.
Leider haben die Labels keinen Transparenz Parameter, zum Mindestes auf dem Device.

Grüsse.
 

Filippo

Expert
Licensed User
Hallo Klaus,

also das mit der Transparenz lässt mir keine Ruhe.

Jetzt habe ich zwei Test's gemacht, einmal mit Visual-Studio-2005 und einmal mit Basic4ppc, dabei verwende ich genau die gleiche DLL (fgControls).

Mit Visual-Studio-2005 funktioniert die Transparenz wunderbar :), mit Basic4ppc absolut nicht! :(

In dem VS2005-Projekt ist die Exe-Datei für den PPC schon enthalten.

Ich bin mit mein Latein am Ende!


Ciao,
Filippo
 

klaus

Expert
Licensed User
Hallo Filippo,

Ich habe Deine exe's getestet. Verstehe aber auch nicht wieso es mit Visual Studio funktioniert und nicht mit B4PPC.

Du solltest das Problem mal Erel schicken.

Wie hast Du das eigentlich in Visual Studio gemacht ?
Ich habe in der MS Dokumentation nach geschaut, aber keinen Transparenz Parameter gefunden. Habe nur in Protected Properties einen RenderTransparent Parameter gesehen der aber, nach MS, auf den PPC's nicht vorgesehen ist !?
Label Properties (System.Windows.Forms)

Grüsse.
 

Filippo

Expert
Licensed User
Hallo Klaus,

Du solltest das Problem mal Erel schicken.
kannst du es für mich übernnemen, du kannst es mit Sicherheit besser in Englisch schreiben. ;)

Ciao,
Filippo
 

klaus

Expert
Licensed User
Hier ist agraham's Antwort:
I haven't rigorously analysed this but from looking inside the fgControls library with Reflector he seems to be trying to draw on the forms background directly. Unfortunately a Basic4ppc Form also draws its backlayer and then its forelayer on the form background so I suspect that it is overwriting his drawing. Tell him to look in CEnhancedForm.cs in the Tzor folder to see what a Basic4ppc Form does on paint.

Ich habe das Problem nicht bis ganz in die Tiefe angeschaut, aber ich habe mir die fgControls Bibliothek mit Reflector angesehen und es scheint dass er (Du) versucht direkt auf den Hintergrund zu zeichnen. Unglücklicherweise zeichnet eine Basic4PPC Form auch ihren Hintergrund und nacher den Forelayer auf diesen Hintergrund, und Ich (agraham) vermute dass dies seine Zeichnung überschreibt. Sage Ihm, er soll in CEnhancedForm.cs im Tzor Ordner nachschauen was eine Basic4PPC Form unter Paint macht.

Grüsse.
 

Filippo

Expert
Licensed User
Hallo Klaus,

vielen Dank für Übersetzung(du bist viel besser als Google). :)

Ich werde mir die CEnhancedForm.cs anschauen, vielleicht kann ich dann etwas modifizieren.

Ciao,
Filippo
 

klaus

Expert
Licensed User
Hallo Filippo,

Wenn man zwei Sprachen spricht ist nicht so schwer besser als Google zu sein. Ich bin sicher dass Du zwischen Deutsch und Italienisch auch weit besser als Google bist.

Aber trotzdem wenn man eine Sprache nicht kennt, kann Google nützlich sein. Aber oft braucht man doch etwas Fantasie um versuchen zu verstehen was der Autor eigentlich sagen wollte. Die Übersetzer haben noch schöne Tage vor sich.

Ab und zu benütze Ich Google um Posts aus mir fremdsprachigen Forums zu übersetzen, manchmal gebe Ich auf, denn es ist unverständlich. Aber Alles in Allem ist es nicht so übel.

Grüsse.
 

klaus

Expert
Licensed User
Hallo VoDB.

Noch einen Hinweis zum Thema.

Wenn man den Text auf den Forelayer zeichnet, kann man wie schon beschrieben den Text gezielt löschen und neu zeuchnen.
Der Nachteil ist leider dass im VGA Modus die Texte verschwommen angezeigt werden.
Mit digitaldon37 hatten wir das Problem in dem Weather Programm.
http://www.basic4ppc.com/forum/open-source-projects/3323-pocket-weather.html#post20228
Die Endlösung ist, wie Filippo es vorgeschlagen hatte, direkt auf den Hintergrund zu zeichnen. Aber diesmal mit dem Nachteil dass, wenn man einen neuen Text schreiben will, zuerst das Hintergrundbild neu geladen und die ganze Seite neu geschrieben werden muss.

Echte Controls mit Transparenz währen eben die beste Lösung, gibt es aber leider nicht, deshalb 'Notlösungen'.

Beste Grüsse.
 

Filippo

Expert
Licensed User
Hallo Jungs,

ich habe fertig!:sign0060:
(zumindest glaube ich)

Nach Tage lange suche und viele Test's ist mein Label mit Transparenz fertig.

Der Ablauf ist ganz einfach. In der DLL wird der originale Label unsichtbar gemacht und den Textinhalt wird in ein PictureBox angezeigt, in dem zuvor den Grafikbereich kopiert wurde.

Ich gebe die neue DLL nur als Beta-Version frei.


Ciao,
Filippo
 
Last edited:

klaus

Expert
Licensed User
Hallo Filippo,

Ich habe Dein transparent Label getestet.

Sieht gut aus !

Ich habe einen kleinen Schönheitsfehler gefunden.
Ich habe in Dein Beispielprogramm einen Button hinzugefügt um den Text von der TextBox auf das Label zu übertragen, denn mit KeyPress wird der letzte Buchstabe nicht übertragen (man könnte es mit der Door Library machen).

Mit 6 und 7 Buchstaben, und Center, wird der letze Buchstabe in die nächste Zeile gezeichnet. Mit 8 Buchstaben ist es wieder normal !?
Mit Right wird der letzte Buchstabe nicht oder nur teilweise angezeigt.

Beste Grüsse und ein glückliches Neues Jahr.
 

Attachments

Filippo

Expert
Licensed User
Hallo Klaus,

Mit 6 und 7 Buchstaben, und Center, wird der letze Buchstabe in die nächste Zeile gezeichnet. Mit 8 Buchstaben ist es wieder normal !?
Mit Right wird der letzte Buchstabe nicht oder nur teilweise angezeigt.
ich kenne dieser Fehler, kommt aber nur auf dem Desktop vor.
Den Grund kenne ich aber noch nicht.:(


Ciao,
Filippo
 
Top