| |
|
|
- Seite 1 - |
|
H.Brill | Hallo, hatte nichts gefunden. Ich bräuchte so eine 7Segment-Anzeige auf meinem Dialog. Dazu müßte ich eine leere Bitmap erstellen, darauf zeichnen und dann im Dialog anzeigen.
Bin aber leider nicht so Grafik- bewandert.
Hab da einen PureBasic Quellcode gefunden, den ich gerne in XProfan umsetzen möchte. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 15.04.2010 ▲ |
|
|
|
|
| |
|
- Seite 1 - |
|
Thomas Freier | Es dürften aber genügend geeignete Free Digifonts im WEB vorhanden sein. Z.B.: [...] |
|
|
| |
|
|
|
ByteAttack | Thomas Freier, Beitrag=56834, Zeitpunkt=21.04.2010
Es dürften aber genügend geeignete Free Digifonts im WEB vorhanden sein. Z.B.: [...]
Je nee - Is klar... Frage mich nur, ob man auch TTF nutzen kann, die nicht installiert sind. Quasi über irgendeinen Zugriff auf die TTF-Datei direkt. |
|
|
| |
|
|
|
| @Marc: Nein, nur nach "windows"fonts... kopierte. ^^
Für meinen Geschmack macht ihr das viel zu kompliziert.
Einfach Bitmapfonttexturmäßig (16*16 Felder in z.B. 512x512-Pixel-Bild) und nur nach einfacher XY-Formel rauskopieren - ist auch superfix oder ich habe das Ziel der Übung missverstanden. ^^ |
|
|
| |
|
|
|
ByteAttack | Ja - Er will ja keine Grafiken mit sich rumschleppen ... |
|
|
| |
|
|
|
| Entweder malt er die Digits in ein hPic oder er läd diese in ein hPic - er kann auch ein hPic erzeugen und einfach Bilddaten aus dem Speicher darin ablegen mit SetBitmapBits(hPic,pixelAnzahl,pixelSpeicher) wie z.B. in der Pixels.Inc. Mit GetBitmapBits käme man auch einfach an die Pixeldaten heran, könnte man als .tex speichern und mit Datengenerator einbinden um per SetBitmapBits wiederum anzuweisen. ^^ |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
H.Brill | Müßte doch möglich sein, in eine Speicherbitmap eine Zahl als 7Segment zu zeichnen und anzuzeigen. Das wäre dann auch ziemlich flott. Deshalb hatte ich auch das PB-Beispiel gewählt. So in etwa stelle ich mir das vor : KompilierenMarkierenSeparierenDeclare bild1&, bild2&, bmp1&, bmp2&, bmp3&, bmp4&, hD%
Proc ZeichneLed
Parameters image&, zahl%, farbe%
StartPaint bmp1&
hier wird auf das entsprechende Bild (Bitmap)
die angegebene Zahl in angegebener Farbe gezeichnet
und angezeigt
EndPaint
EndProc
Proc Dialog
Declare hB%, start%, info%, OK%, Name$
hD% = @Create("Dialog",%DeskTop,"Dialogfenster",100,100,600,400)
hB% = @Create("Button",hD%,"&ENDE",10,10,60,25)
info% = @Create("Button", hD%, "&Info", 100, 10, 60, 25)
start% = @Create("Button", hD%, "&Start",180, 10, 60, 25)
bild1& = @Create("hNewPic", 20, 40, RGB(0,255,255)) Cyan Image
bild2& = @Create("hNewPic", 20, 40, RGB(255,0,0)) Red image
bmp1& = Create("BITMAP",hD%,bild1&,30,60)
bmp2& = Create("BITMAP",hD%,bild1&,52,60)
bmp3& = Create("BITMAP",hD%,bild2&,74,60)
bmp4& = Create("BITMAP",hD%,bild2&,96,60)
Clear OK%
WhileNot Ok%
WaitInput
If @Clicked(hB%)
Ok% = 1
ElseIf %Key = 2
Hier wird das X (rechts oben Schließen) ausgewertet
OK% = 1
ElseIf @Clicked(info%)
Name$ = @GetText$(Edit1%)
@MessageBox("Ich bin der Autor : " + Name$, "Info", 0)
ElseIf @Clicked(start%)
ZeichneLed bmp1&, 1, RGB(x,x,x) Zahl 1 mit Farbe RGB() zeichnen
EndIf
EndWhile
Dialogfenster (incl. Button, usw.) entfernen
@DestroyWindow(hD%)
EndProc
Hier wird die Dialogbox (Procedur) aufgerufen
Dialog
DeleteObject bild1&, bild2&, bmp1&, bmp2&, bmp3&, bmp4&
End
|
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 22.04.2010 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hi Leute!
Frage mich nur, ob man auch TTF nutzen kann, die nicht installiert sind. Quasi über irgendeinen Zugriff auf die TTF-Datei direkt. KompilierenMarkierenSeparieren BTW1: Bei Verwendung von AddFontResourceEx /RemoveFontResourceEx kann man auch bestimmen, daß nur das eigene Programm Zugriff auf den Font hat.
BTW2: Läßt man RemoveFontResource weg, bleibt der Font bis zum nächsten Neustart in Windows verfügbar.
BTW3: Der Fontname muß nicht mit dem Dateinamen identisch sein!
BTW4: © / ® des Fonts bei Weitergabe beachten!
HTH Pascal |
|
|
| |
|
|
|
| Cool, wusste ich garnicht, dass man TTFs auch "on-the-fly" nutzen kann. ^^
Wäre auf jedenfall ein schönes Snippet.
H.Brill, Beitrag=56854, Zeitpunkt=22.04.2010
Müßte doch möglich sein, in eine Speicherbitmap eine Zahl als 7Segment zu zeichnen und anzuzeigen.
Jetzt verstehe ich erst, was Du meinst.
Klar geht dies einfach, ich schaue heute abend gleich mal - ich würde wohl die Ziffern-Segmentinfos für alle Ziffern einfach in einen String (Speicher) ablegen - mache ich dann vor wie ich es meine. ^^ |
|
|
| |
|
|
|
ByteAttack | @Pascal: Geil ! Das ist mir doch glatt 5 Bannannannnas wert... |
|
|
| |
|
|
|
| Vlt. sowas: KompilierenMarkierenSeparierendecimals 0
randomize
window 1000,750
var myDisplayHPic&=digitsHPic.create("012345",32,64)
while 1
waitinput 500
drawPic myDisplayHPic&,20,20;0
digitsHPic.renew(myDisplayHPic&,str$(rnd(999999)),32,64)
wend
...deleteObject(myDisplayHPic&)
end
proc digitsHPic.create
parameters digits$,charWidth&,charHeight&
case digits$="" : digits$="0"
var hPic&=create("hNewPic",len(digits$)*charWidth&,charHeight&,0)
digitsHPic.renew(hPic&,digits$,charWidth&,charHeight&)
return hPic&
endproc
proc digitsHPic.renew
parameters hPic&,digits$,charWidth&,charHeight&
var c&=len(digits$)
casenot c& : return
startPaint hPic&
cls $3E3E3E
var lnsz&=int(sqrt(charWidth&*charHeight&)*0.08)
var innerCharWidth&=int(charWidth&*0.8)
var innerCharHeight&=int(charHeight&*0.8)
var innerCharYM&=int(charHeight&*0.5)
var innerCharX&=int((charWidth&-innerCharWidth&)*0.5)
var innerCharY&=int((charHeight&-innerCharHeight&)*0.5)
var digs$="0000000001001010111011011011011101011010111101111101001011111111111011"
var ch&=""
whileLoop 0,c&-1
ch&=(ord(mid$(digits$,&loop+1,1))-48)*7
digitsHPic.renew.line(0,&loop*charWidth&+innerCharX&+lnsz&,innerCharY& , &loop*charWidth&+innerCharX&+innerCharWidth&-lnsz&,innerCharY& )
digitsHPic.renew.line(1,&loop*charWidth&+innerCharX&,innerCharY&+lnsz& , &loop*charWidth&+innerCharX&,innerCharYM&-lnsz& )
digitsHPic.renew.line(2,&loop*charWidth&+innerCharX&+innerCharWidth&,innerCharY&+lnsz& , &loop*charWidth&+innerCharX&+innerCharWidth&,innerCharYM&-lnsz& )
digitsHPic.renew.line(3,&loop*charWidth&+innerCharX&+lnsz&,innerCharYM& , &loop*charWidth&+innerCharX&+innerCharWidth&-lnsz&,innerCharYM& )
digitsHPic.renew.line(4,&loop*charWidth&+innerCharX&,innerCharYM&+lnsz& , &loop*charWidth&+innerCharX&,innerCharY&+innerCharHeight&-lnsz& )
digitsHPic.renew.line(5,&loop*charWidth&+innerCharX&+innerCharWidth&,innerCharYM&+lnsz& , &loop*charWidth&+innerCharX&+innerCharWidth&,innerCharY&+innerCharHeight&-lnsz& )
digitsHPic.renew.line(6,&loop*charWidth&+innerCharX&+lnsz&,innerCharY&+innerCharHeight& , &loop*charWidth&+innerCharX&+innerCharWidth&-lnsz&,innerCharY&+innerCharHeight& )
wend
usepen 0,int(lnsz&*0.25),0
usebrush 0,0
whileLoop 0,c&-1
rectangle &loop*charWidth&,0 - &loop*charWidth&+charWidth&,charHeight&
wend
endPaint
proc digitsHPic.renew.line
parameters ln&,x&,y&,xx&,yy&
usepen 0,lnsz&,if(byte(addr(digs$),ch&+ln&)-48,$22FF11,$4E4E4E)
line x&,y& - xx&,yy&
endproc
endproc
Herunterladen
Kann das auch als Control bereitstellen. |
|
|
| |
|
|
|
H.Brill | sieht schon mal ganz gut aus. Geht sowas auch auf einem Dialog ? Bräuchte sowas in einer normalen Dialog-Anwendung.
Soweit ich weiß, spielen da die UseBrush und UsePen - Befehle nicht mit. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 22.04.2010 ▲ |
|
|
|
|
| Klar, Du hast ja die Wahl einfach nur das HPic zu zeichnen oder das HPic für ein Bitmap ( create("Bitmap...) anzuwenden - Bitmaps können ja problemlos auf Dialogen abgelegt werden. |
|
|
| |
|
|