Wasserzeichenersatz [ERLEDIGT]

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Wasserzeichenersatz [ERLEDIGT]

Beitrag von Manfred »

Hi,

ich hatte das Thema Wasserzeichen schonmal im Druckerthread. Jetzt würde ich es gerne so lösen, dass ich halt per Befehl einen Text quer über ein Blatt drucken kann. ich habe auch schon einen Tipp bekommen, wie man das anpacken könnte, aber der klappt nicht. Wie kann ich denn mittels express++ z.b. Einen diagonalen Schriftzug auf den Ausdruck zaubern?
Es ist was mit Attribute, aber es will nicht klappen bei mir.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wasserzeichenersatz

Beitrag von brandelh »

In meiner Druckerklasse (HBPrintPRG) kannst du unter PrintText() nachsehen, wie man Schriften gedreht druckt.

Siehe hierzu auch die Hilfe von GraSetAttrString( [<oPS>], [<aAttributes>] ) --> aOldAttributes
es geht um

Code: Alles auswählen

  GRA_AS_ANGLE        { nX, nY }          { 1, 0 }                     
aber nicht in GRAD, eine Umrechnungsfunktion kannst du auch bei mir im code finden (etwas ungenau auf 1° berechnet ;-) )

Ob Express das direkt vorsieht weiß ich nicht.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Wasserzeichenersatz

Beitrag von Tom »

Das geht nur mit TrueType- oder PS-Fonts, nicht mit Bitmap-Schriftarten, die aber ohnehin kaum noch verwendet werden. Du musst die Attribute für GraSetAttrString() setzen, also ein Attributearray "a := Array(GRA_AS_COUNT)" erzeugen. Darin musst Du die Attribute GRA_AS_DIRECTION und GRA_AS_ANGLE setzen, z.B.:

a[GRA_AS_DIRECTION] := GRA_CHDIRN_TOPBOTTOM // von oben nach unten
a[GRA_AS_ANGLE] := {x,y} // Richtung bzw. Winkel des Textes bezogen auf 0,0

Ich habe das selbst noch nicht ausprobiert, also müsstest Du das mal tun. Jedenfalls muss dieses Attributearray dann bei DCPRINT SAY angegeben werden. Gib mal Laut, wie und ob das funktioniert hat.

Und Gott sei Dank für List&Label. :wink:
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Wasserzeichenersatz

Beitrag von Manfred »

Prima Tom,

ich hatte das Array zu klein. Ich hatte es mit GRA_AS_ANGLE vorbelegt. Dadurch gab es immer eine Fehlermeldung.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Wasserzeichenersatz

Beitrag von Manfred »

Leider klappt es aber noch nicht so, wie ich es mir gedacht hatte. Egal was ich angebe, es wird nur von unten nach oben gedruckt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Wasserzeichenersatz

Beitrag von Martin Altmann »

Moin,
attr[GRA_AS_ANGLE] := { 0, 10 }
ist senkrecht - was ist denn dann
attr[GRA_AS_ANGLE] := { 5, 5 }

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Wasserzeichenersatz

Beitrag von Martin Altmann »

Nur so als Tipp:
Statt 5,5 kannst Du natürlich auch die jeweiligen Seitenränder nehmen, dann läuft der Text im passenden Diagonalwinkel über die Seite.
Also sinngemäß:

Code: Alles auswählen

attr[GRA_AS_ANGLE] := oPS:setPageSize() [1]
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Wasserzeichenersatz

Beitrag von Tom »

Egal was ich angebe, es wird nur von unten nach oben gedruckt.
Lass mal die Direction-Sache weg.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Wasserzeichenersatz

Beitrag von Manfred »

Martins Tipp war schon ganz richtig. Ich bin jetzt fast da, wo ich hin will.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wasserzeichenersatz

Beitrag von brandelh »

die GRA_AS_DIRECTION lässt man in Ruhe !
wo der String anfängt, bestimmt man über den 2. Parameter von GraStringAt() bzw. deinem Express Druckbefehl.
die Länge des Textes und die Drehrichtung entscheidet über den Endepunkt.

Das Problem ist der Parameter von GRA_AS_ANGEL, da dieser über den Einheitskreis die Drehung bestimmt.
Der Ursprung des Textes liegt im Einheitskreis auf {0,0}
Normaler Text (links nach rechts) {1,0} // also X Achse 1 (oder ein Vielfaches), Y Achse = 0
45% von links unten nach rechts oben {1,1}
90% von unten nach oben {0,1}
... es gehen auch Bruchteile und Vielfaches, aber so kann man es am Besten verstehen ... nutzen möchte ich das so nicht ;-)

In meiner Druckerklasse habe ich daher eine Funktion die auf Grad umrechnet. Hier mal ein Druckbeispiel:
Dateianhänge
HB-Printer.pdf
(29.81 KiB) 259-mal heruntergeladen
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Wasserzeichenersatz

Beitrag von Manfred »

verflixt, ich wußte ich hatte irgendwie diesen Kreis gesehen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wasserzeichenersatz

Beitrag von brandelh »

Wenn du dann die Ausgabe noch zentrieren möchtest, musst du die Größe mit GraQueryTextBox( [<oPS>], <cString> ) --> aPoints ermitteln und den Ursprung entsprechend verschieben.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Wasserzeichenersatz

Beitrag von Manfred »

Danke an euch, aber ich bin im Moment zufrieden wie es ist. Das geht quer und so wollte ich es haben.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wasserzeichenersatz

Beitrag von brandelh »

so rufe ich das auf:

Code: Alles auswählen

   if ! IsNil(nDrehen)
      aadd(aAttribNeu, { GRA_AS_ANGLE , HbGradToXppArray(nDrehen,100) } )
   endif
und so ist die Funktion, wie gesagt in 1 Grad Schritten durchgerechnet und hardcodiert (PowerBasic hat passende Funktionen)

Code: Alles auswählen

*----------------------------------------------------------
function HbGradToXppArray(nDrehen,nFaktor)         // noch nicht perfekt ########### prfen !!!"
   local nX, nY, aCosSin, nDrehenInt

   DEFAULT nFaktor TO 1                            // Werte zwischen -1 und 1, fr Ausgabe in Bildpunkten sind diese Werte zu klein
                                                   // ber Faktor kann die L„nge bestimmt werden:   1 = 1/10mm, 10 = 1 mm etc.
                                                   // Valuerange is -1 to 1, for printtext etc. are the values to low
                                                   // the length could be defined with nFaktor:   1 = 1/10mm, 10 = 1 mm etc.

   aCosSin :=  { {1.0000000000000000,0.0000000000000000} , ;   // 0 Grad -> nDrehenInt+1 -> 1. Element
                 {0.9998476951563913,0.0174524064372835} , ;   // 1 Grad -> nDrehenInt+1 -> 2. Element
                 {0.9993908270190958,0.0348994967025010} , ;
                 {0.9986295347545739,0.0523359562429438} , ;
                 {0.9975640502598243,0.0697564737441253} , ;
                 {0.9961946980917455,0.0871557427476582} , ;   // Falls jemand eine bessere Funktion weiá, bitte mitteilen.
                 {0.9945218953682733,0.1045284632676535} , ;   // if someone knows a better (fast) way, let me know.
                 {0.9925461516413220,0.1218693434051475} , ;
                 {0.9902680687415704,0.1391731009600654} , ;
                 {0.9876883405951378,0.1564344650402309} , ;
                 {0.9848077530122080,0.1736481776669303} , ;
                 {0.9816271834476640,0.1908089953765448} , ;
                 {0.9781476007338058,0.2079116908177593} , ;
                 {0.9743700647852353,0.2249510543438650} , ;
                 {0.9702957262759965,0.2419218955996677} , ;
                 {0.9659258262890683,0.2588190451025208} , ;
                 {0.9612616959383189,0.2756373558169992} , ;
                 {0.9563047559630355,0.2923717047227367} , ;
                 {0.9510565162951535,0.3090169943749474} , ;
                 {0.9455185755993169,0.3255681544571567} , ;
                 {0.9396926207859084,0.3420201433256687} , ;
                 {0.9335804264972018,0.3583679495453003} , ;
                 {0.9271838545667874,0.3746065934159120} , ;
                 {0.9205048534524404,0.3907311284892738} , ;
                 {0.9135454576426009,0.4067366430758001} , ;
                 {0.9063077870366499,0.4226182617406994} , ;
                 {0.8987940462991670,0.4383711467890774} , ;
                 {0.8910065241883679,0.4539904997395468} , ;
                 {0.8829475928589270,0.4694715627858908} , ;
                 {0.8746197071393958,0.4848096202463371} , ;
                 {0.8660254037844388,0.4999999999999999} , ;
                 {0.8571673007021124,0.5150380749100541} , ;
                 {0.8480480961564260,0.5299192642332049} , ;
                 {0.8386705679454240,0.5446390350150271} , ;
                 {0.8290375725550418,0.5591929034707468} , ;
                 {0.8191520442889918,0.5735764363510460} , ;
                 {0.8090169943749475,0.5877852522924731} , ;
                 {0.7986355100472929,0.6018150231520483} , ;
                 {0.7880107536067219,0.6156614753256583} , ;
                 {0.7771459614569709,0.6293203910498374} , ;
                 {0.7660444431189780,0.6427876096865393} , ;
                 {0.7547095802227720,0.6560590289905073} , ;
                 {0.7431448254773943,0.6691306063588583} , ;
                 {0.7313537016191706,0.6819983600624985} , ;
                 {0.7193398003386513,0.6946583704589973} , ;
                 {0.7071067811865476,0.7071067811865475} , ;
                 {0.6946583704589973,0.7193398003386511} , ;
                 {0.6819983600624985,0.7313537016191705} , ;
                 {0.6691306063588583,0.7431448254773941} , ;
                 {0.6560590289905073,0.7547095802227720} , ;
                 {0.6427876096865394,0.7660444431189780} , ;
                 {0.6293203910498375,0.7771459614569709} , ;
                 {0.6156614753256583,0.7880107536067219} , ;
                 {0.6018150231520484,0.7986355100472929} , ;
                 {0.5877852522924731,0.8090169943749475} , ;
                 {0.5735764363510461,0.8191520442889918} , ;
                 {0.5591929034707468,0.8290375725550418} , ;
                 {0.5446390350150272,0.8386705679454240} , ;
                 {0.5299192642332049,0.8480480961564260} , ;
                 {0.5150380749100544,0.8571673007021123} , ;
                 {0.5000000000000001,0.8660254037844386} , ;
                 {0.4848096202463371,0.8746197071393958} , ;
                 {0.4694715627858909,0.8829475928589269} , ;
                 {0.4539904997395468,0.8910065241883678} , ;
                 {0.4383711467890774,0.8987940462991670} , ;
                 {0.4226182617406994,0.9063077870366499} , ;
                 {0.4067366430758002,0.9135454576426009} , ;
                 {0.3907311284892737,0.9205048534524404} , ;
                 {0.3746065934159122,0.9271838545667874} , ;
                 {0.3583679495453004,0.9335804264972018} , ;
                 {0.3420201433256688,0.9396926207859084} , ;
                 {0.3255681544571568,0.9455185755993168} , ;
                 {0.3090169943749474,0.9510565162951535} , ;
                 {0.2923717047227368,0.9563047559630354} , ;
                 {0.2756373558169992,0.9612616959383189} , ;
                 {0.2588190451025208,0.9659258262890683} , ;
                 {0.2419218955996677,0.9702957262759965} , ;
                 {0.2249510543438652,0.9743700647852353} , ;
                 {0.2079116908177595,0.9781476007338056} , ;
                 {0.1908089953765449,0.9816271834476640} , ;
                 {0.1736481776669304,0.9848077530122080} , ;
                 {0.1564344650402309,0.9876883405951378} , ;
                 {0.1391731009600655,0.9902680687415704} , ;
                 {0.1218693434051475,0.9925461516413220} , ;
                 {0.1045284632676535,0.9945218953682733} , ;
                 {0.0871557427476581,0.9961946980917455} , ;
                 {0.0697564737441255,0.9975640502598243} , ;
                 {0.0523359562429440,0.9986295347545739} , ;
                 {0.0348994967025011,0.9993908270190958} , ;
                 {0.0174524064372836,0.9998476951563913} , ;
                 {0.0000000000000000,1.0000000000000000} }

   nDrehenInt  := int(nDrehen)                          // 23.123 -> aCosSin[23, X/Y ]

   do case
      case nDrehenInt >=  0 .and. nDrehenInt <= 90
           nX := aCosSin[nDrehenInt+1,1]
           nY := aCosSin[nDrehenInt+1,2]
      case nDrehenInt >  90 .and. nDrehenInt <=180
           nDrehenInt := 180-nDrehenInt
           nX := aCosSin[nDrehenInt+1,1] * -1
           nY := aCosSin[nDrehenInt+1,2]
      case nDrehenInt > 180 .and. nDrehenInt<=270
           nDrehenInt -= 180
           nX := aCosSin[nDrehenInt+1,1] * -1
           nY := aCosSin[nDrehenInt+1,2] * -1
      case nDrehenInt > 270 .and. nDrehenInt<=360
           nDrehenInt := 360-nDrehenInt
           nX := aCosSin[nDrehenInt+1,1]
           nY := aCosSin[nDrehenInt+1,2] * -1
   endcase

return {nX*nFaktor,nY*nFaktor}
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Wasserzeichenersatz [ERLEDIGT]

Beitrag von Manfred »

Hm,
bei mir klappt nur {1,1} dann ist es schräg. Andere Kombinationen ergeben immer nur senkrecht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wasserzeichenersatz [ERLEDIGT]

Beitrag von brandelh »

das könnte an einer Anpassung von eXpress liegen.
Gruß
Hubert
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Wasserzeichenersatz [ERLEDIGT]

Beitrag von Wolfgang Ciriack »

Hallo Manfred, poste doch mal die Lösung mit eXPress, falls man das später mal benötigt.
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Wasserzeichenersatz [ERLEDIGT]

Beitrag von Manfred »

Mehr ist das nicht

Code: Alles auswählen

LOCAL aAttrVertical[ GRA_AS_COUNT ]
         aAttrVertical[ GRA_AS_ANGLE ]     := {1,1}
          DCPRINT FONT "60.Courier Bold"
          @ 60,10 DCPRINT SAY "Text";
                     ATTRIBUTE aAttrVertical
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Wasserzeichenersatz [ERLEDIGT]

Beitrag von Wolfgang Ciriack »

Ok, danke.
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wasserzeichenersatz [ERLEDIGT]

Beitrag von brandelh »

vielleicht die Farbe in einem hellen Grau ;-)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Wasserzeichenersatz [ERLEDIGT]

Beitrag von Manfred »

nee, soll schon ordentlich auffallen :wink:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Wasserzeichenersatz [ERLEDIGT]

Beitrag von AUGE_OHR »

Manfred hat geschrieben:verflixt, ich wußte ich hatte irgendwie diesen Kreis gesehen.
meinst du diesen Kreis mit Buchstaben ? ( Nero activeX CD / DVD Burning )

Code: Alles auswählen

   GraPathClip(oPS , .T.)              // Clipping einschalten

   aAttr    := ARRAY( GRA_AS_COUNT )
   //
   // gilt für alle ...
   //
   aAttr [ GRA_AS_ANGLE ] := { 1,-1}

   aAttr [ GRA_AS_COLOR ]     := GRA_CLR_BLACK
   aAttr [ GRA_AS_BACKCOLOR ] := XBPSYSCLR_TRANSPARENT
   aAttr [ GRA_AS_MIXMODE   ] := GRA_FGMIX_OVERPAINT
   aAttr [ GRA_AS_BGMIXMODE ] := GRA_BGMIX_OVERPAINT
   aAttr [ GRA_AS_BOX       ] :=  {16,8}
   aAttr [ GRA_AS_EXTRA     ]  := 14
   aAttr [ GRA_AS_BREAK_EXTRA] := 14

   GraSetAttrString( oPS, aAttr )

   //
   // für Line
   //
   aAttrLine                   := ARRAY(GRA_AL_COUNT)
   aAttrLine[ GRA_AL_MIXMODE ] := GRA_FGMIX_XOR
   aAttrLine[ GRA_AL_COLOR   ] := XBPSYSCLR_TRANSPARENT
   aAttrLine[ GRA_AL_WIDTH   ] := 1
   aAttrLine[ GRA_AL_TYPE    ] := GRA_LINETYPE_INVISIBLE

   GraSetAttrLine(oPS,aAttrLine)        // Attribute setzen
 
   //
   // für Area ???
   //
   aAttrArea                   := ARRAY(GRA_AA_COUNT)
   aAttrArea[ GRA_AA_MIXMODE ] := GRA_FGMIX_OVERPAINT
   GraSetAttrArea(oPS,aAttrArea)

   i    := 1
   nTextLen := MIN(60,LEN(cLaufband))
   FOR i := 1 TO nTextLen

      nSegment := graSegOpen(oPs)
      cTeil := SUBSTR(cLaufband,i,1)

   IF OnOSVersion() > 5                          // Vista-Win7 DVW Aero
      GraStringAt( oPS, { 98, 98}, "   " )
      GraStringAt( oPS, { 98, 98}, cTeil )
   ELSE
      GraStringAt( oPS, { 94, 94}, " " )
      GraStringAt( oPS, { 94, 94}, cTeil )
   ENDIF
      GraSegClose(oPS)

      GraRotate( oPS, aMatrix, 360/nTextLen,;
      {(aSize[1]/2)+nBorder,(aSize[2]/2)-nBorder}, GRA_TRANSFORM_ADD )

      GraSegDraw(oPS, nSegment, aMatrix)

      GraSegDestroy( oPS, nSegment )

   NEXT

   GraPathClip(oPS , .F.)              // Clipping ausschalten
die Buchstaben werden in einem Kreis gezeichnet zum Mittelpunkt ausgerichtet.
gruss by OHR
Jimmy
Antworten