German Label-Transparenz

Discussion in 'German Forum' started by Filippo, Nov 24, 2008.

  1. Filippo

    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
     

    Attached Files:

  2. klaus

    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.
     

    Attached Files:

  3. Filippo

    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
     
  4. klaus

    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.
     
  5. Filippo

    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
     
  6. klaus

    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.
     
  7. Filippo

    Filippo Expert Licensed User

    Hallo Klaus,

    kannst du es für mich übernnemen, du kannst es mit Sicherheit besser in Englisch schreiben. ;)

    Ciao,
    Filippo
     
  8. klaus

    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.
     
  9. Filippo

    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
     
  10. klaus

    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.
     
  11. VoDB

    VoDB Member Licensed User

    nicht so bescheiden ihr zwei. Ich habe das soeben prima gebrauchen können, meinen Dank für die Veröffentlichung.
    Gruß
    VoDB
     
  12. klaus

    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.
     
  13. Filippo

    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: Dec 30, 2008
  14. klaus

    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.
     

    Attached Files:

  15. Filippo

    Filippo Expert Licensed User

    Hallo Klaus,

    ich kenne dieser Fehler, kommt aber nur auf dem Desktop vor.
    Den Grund kenne ich aber noch nicht.:(


    Ciao,
    Filippo
     
  16. Filippo

    Filippo Expert Licensed User

    Hallo Klaus,

    damit sollte das Problem behoben sein.:)


    Ciao,
    Filippo
     
  17. klaus

    klaus Expert Licensed User

    Ja, jetzt sieht es prima aus.

    Grüsse.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice