Foro | | | | H.Brill | ¡Hola, hatte nichts gefunden. Yo bräuchte así una 7Segment-Anzeige en mi Diálogo. Dazu müßte Yo una vacío Mapa de bits redactar, darauf dibujar y luego en el Diálogo Mostrar.
Bin aber por desgracia, no así Grafik- bewandert.
Hab como una PureBasic Quellcode gefunden, el Me gusta en 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 ▲ |
| |
| | | ¿Te ha Crear("Mapa de bits ? |
| | | | |
| | ByteAttack | Moin,
wieso nmmst No simplemente una Grafik con allen 11 Zuständen nebeneinander (Aus,0,1,2,3,4,5,6,7,8,9) ladest en el Speicher y kopierst entonces el Zona simplemente una Dialogelement? |
| | | | |
| | ByteAttack | Hier veces una Grafik para Usted!
|
| | | | |
| | ByteAttack | SO! Hier veces una simplemente Ejemplo: KompilierenMarcaSeparaciónDeclare Dlg&
Proc Draw7Seg
Parameters number$
Declare 1$,2$,3$,1%,2%,3%
1$=Left$(number$,1)
2$=Mid$(number$,2,1)
3$=Right$(number$,1)
1%=Val(1$)+1
2%=Val(2$)+1
3%=Val(3$)+1
StartPaint Dlg&
MCopyBmp 118*1%,0-118,156 > 10,10;0
MCopyBmp 118*2%,0-118,156 > 130,10;0
MCopyBmp 118*3%,0-118,156 > 250,10;0
EndPaint
EndProc
WindowStyle 24
WindowTitle "Hauptfenster %hwnd"
Window 10,10-200,100
cls 0
MLoadBmp $ProgDir+"7SEG.BMP"
Dlg&=Create("Dialog",%hwnd,"Dialogfenster",((%maxX/2)-192),((%maxY/2)-103),384,206)
StartPaint Dlg&
cls 0
MCopyBmp 0,0-118,156 > 10,10;0
MCopyBmp 0,0-118,156 > 130,10;0
MCopyBmp 0,0-118,156 > 250,10;0
EndPaint
Draw7Seg "012"
Waitmouse
|
| | | | |
| | H.Brill | Ist sí interessant, aber como muß Yo en efecto verschiedene Bitmaps mitschleppen, si yo otro Farben haben voluntad. Der Punkt como Dezimaltrenner fehlt de paso.
Hab como a algo como como en el Anhang pensamiento.
Könntet ihr veces encima media Code schauen. Hab veces intenta, el PB-Code a übertragen, aber irgendwo hakt lo. Ist auch todavía así manches mejor a hacer, si yo a Speicherbitmaps denke. Bin sólo kein así Grafiker.
PB-Code : KompilierenMarcaSeparación; PureBasic 4.40
; Idea from Localmotion34
; De préférence utilisez un gadget ayant un rapport de 11 * 13 ex 110 / 130
EnableExplicit
Structure SevenSegmentLed
x.l
y.l
width.l
height.l
Image.l
Gadget.l
value.l
point.l
color1.l
color2.l
BackgroundColor.l
EndStructure
;{ Datasection
DataSection
Led:
; Segment a
Data.l 1,1,1,-1,6,0,1,1,-1,1,-6,0,-1,-1,0,0
; Segment g
Data.l 1,6,1,-1,6,0,1,1,-1,1,-6,0,-1,-1,0,0
; Segment d
Data.l 1,11,1,-1,6,0,1,1,-1,1,-6,0,-1,-1,0,0
; Segment f
Data.l 1,1,1,1,0,3,-1,1,-1,-1,0,-3,1,-1,0,0
; Segment b
Data.l 9,1,1,1,0,3,-1,1,-1,-1,0,-3,1,-1,0,0
; Segment e
Data.l 1,6,1,1,0,3,-1,1,-1,-1,0,-3,1,-1,0,0
; Segment c
Data.l 9,6,1,1,0,3,-1,1,-1,-1,0,-3,1,-1,0,0
; Point
Data.l 10,11,1,1,-1,1,-1,-1,1,-1,0,0
; Fin dessin Leds
Data.l 0,0
SegmentA:
Data.l 5,1
SegmentB:
Data.l 9,3
SegmentC:
Data.l 9,8
SegmentD:
Data.l 5,11
SegmentE:
Data.l 1,9
SegmentF:
Data.l 1,4
SegmentG:
Data.l 5,6
SegmentP:
Data.l 10,12
EndDataSection
;}
ProcedureDLL SevenSegmentLed(BildId.l, x,y,width,height,color1,color2,BackgroundColor)
; Initialise the LinkedList the first call
Static Init
If Init=0
Global NewList SevenSegmentLedLList.SevenSegmentLed()
EndIf
Init=1
; Fill the Structure
AddElement(SevenSegmentLedLList())
SevenSegmentLedLList()x=x
SevenSegmentLedLList()y=y
SevenSegmentLedLList()width=width
SevenSegmentLedLList()height=height
SevenSegmentLedLList()color1=color1
SevenSegmentLedLList()color2=color2
SevenSegmentLedLList()BackgroundColor=BackgroundColor
SevenSegmentLedLList()Image=CatchImage(#PB_Any,BildId)
Protected PWidth.f=SevenSegmentLedLList()width/11
Protected PHeight.f=SevenSegmentLedLList()height/13
;/ Dessine les Leds
;UseImage(SevenSegmentLedLList()Image)
StartDrawing(ImageOutput(SevenSegmentLedLList()Image))
Box(0,0,SevenSegmentLedLList()width,SevenSegmentLedLList()height,SevenSegmentLedLList()BackgroundColor)
Restore Led
Repeat
Read.l x
Read.l y
If x=0 And y=0 : Break : EndIf
Protected a.l, b.l
Repeat
Read.l a
Read.l b
If a=0 And b=0 : Break : EndIf
;Line(x*PWidth,y*PHeight,a*PWidth,b*PHeight,color1)
LineXY(x*PWidth,y*PHeight,x*PWidth + a*PWidth,y*PHeight + b*PHeight,color1)
x=x+a : y=y+b
ForEver
ForEver
StopDrawing()
; create the gadget & show the image
SevenSegmentLedLList()Gadget=ImageGadget(#PB_Any,SevenSegmentLedLList()x,SevenSegmentLedLList()y,width,height,ImageID(SevenSegmentLedLList()Image),#PB_Image_Border)
; Return the gadget id
ProcedureReturn ListIndex(SevenSegmentLedLList())
EndProcedure
ProcedureDLL SevenSegmentLedSet(id,value)
SelectElement(SevenSegmentLedLList(),id)
SevenSegmentLedLList()value=value
Protected PWidth.f=SevenSegmentLedLList()width/11
Protected PHeight.f=SevenSegmentLedLList()height/13
;/ Allume les Segments
;UseImage(SevenSegmentLedLList()Image)
StartDrawing(ImageOutput(SevenSegmentLedLList()Image))
; Eteind les segments
Restore SegmentA
Protected n
Protected a.l, b.l
Protected temp.s
For n=1 To 8
Read.l a
Read.l b
FillArea(a*PWidth,b*PHeight,SevenSegmentLedLList()color1,SevenSegmentLedLList()BackgroundColor)
Next
Select value
Case 0
temp.s="abcdef"
Case 1
temp="bc"
Case 2
temp="abged"
Case 3
temp="abgcd"
Case 4
temp="fbgc"
Case 5
temp="afgcd"
Case 6
temp="afedgc"
Case 7
temp="abc"
Case 8
temp="abcdefg"
Case 9
temp="abcdfg"
EndSelect
; Gestion du point
If SevenSegmentLedLList()point=1
temp+"p"
EndIf
For n=1 To Len(temp)
Select Mid(temp,n,1)
Case "a"
Restore SegmentA
Case "b"
Restore SegmentB
Case "c"
Restore SegmentC
Case "d"
Restore SegmentD
Case "e"
Restore SegmentE
Case "f"
Restore SegmentF
Case "g"
Restore SegmentG
Case "p"
Restore SegmentP
EndSelect
Read.l a
Read.l b
FillArea(a*PWidth,b*PHeight,SevenSegmentLedLList()color1,SevenSegmentLedLList()color2)
Next
StopDrawing()
SetGadgetState(SevenSegmentLedLList()Gadget,ImageID(SevenSegmentLedLList()Image))
EndProcedure
ProcedureDLL SevenSegmentLedGet(id)
SelectElement(SevenSegmentLedLList(),id)
ProcedureReturn SevenSegmentLedLList()value
EndProcedure
Procedure SevenSegmentLedEvent(id)
SelectElement(SevenSegmentLedLList(),id)
ProcedureReturn SevenSegmentLedLList()Gadget
EndProcedure
ProcedureDLL SevenSegmentLedPoint(id,light)
SelectElement(SevenSegmentLedLList(),id)
SevenSegmentLedLList()light
EndProcedure
mi Profano Incluir : KompilierenMarcaSeparaciónDeclarar SevensegmentLed#, Led#, SegmentA#, SegmentB#, SegmentC#, SegmentD#, SegmentE#, SegmentF#, SegmentG#, SegmentP#
Declarar bmp1&, zaehler%
Declarar barray#[10]
Struct ssegmentLed = x%, y%, width%, height%, image&, gadget&, value&, point&, color1&, color2&, backgroundcolor&
Dim SevensegmentLed#, ssegmentLed
Dim barray#[], ssegmentLed
Dim Led#, 504
Dim SegmentA#,8
Dim SegmentB#,8
Dim SegmentC#,8
Dim SegmentD#,8
Dim SegmentE#,8
Dim SegmentF#,8
Dim SegmentG#,8
Dim SegmentP#,8
Proc InitSegments
Segment a
Largo Led#,0 = 1,1,1,-1,6,0,1,1,-1,1,-6,0,-1,-1,0,0
Segment g
Largo Led#,64 = 1,6,1,-1,6,0,1,1,-1,1,-6,0,-1,-1,0,0
Segemnt d
Largo Led#,128 = 1,11,1,-1,6,0,1,1,-1,1,-6,0,-1,-1,0,0
Segemnt f
Largo Led#,192 = 1,1,1,1,0,3,-1,1,-1,-1,0,-3,1,-1,0,0
Segment b
Largo Led#,256 = 9,1,1,1,0,3,-1,1,-1,-1,0,-3,1,-1,0,0
Segemnt e
Largo Led#,320 = 1,6,1,1,0,3,-1,1,-1,-1,0,-3,1,-1,0,0
Segemnt c
Largo Led#,384 = 9,6,1,1,0,3,-1,1,-1,-1,0,-3,1,-1,0,0
Punto
Largo Led#,448 = 10,11,1,1,-1,1,-1,-1,1,-1,0,0
Ende Design Led
Largo Led#,496 = 0,0
Largo SegmentA#,0 = 5,1
Largo SegmentB#,0 = 9,3
Largo SegmentC#,0 = 9,8
Largo SegmentD#,0 = 5,11
Largo SegmentE#,0 = 1,9
Largo SegmentF#,0 = 1,4
Largo SegmentG#,0 = 5,6
Largo SegmentP#,0 = 10,12
zaehler% = 0
ENDPROC
Proc DisposeSegments
DeleteObject SevensegmentLed#.image&
DeleteObject bmp1&
Disponer SevensegmentLed#, Led#, SegmentA#, SegmentB#, SegmentC#, SegmentD#, SegmentE#, SegmentF#, SegmentG#, SegmentP#
Disponer barray#[]
ENDPROC
Proc SevenSegmentLed
Parámetros x%, y%, width%, height%, color1&, color2&, Backgroundcolor&
Declarar pwidth%, pheight%, mx%, my%, k%, a%, b%
k% = 0
With SevensegmentLed#
.x% = x%
.y% = y%
.width% = width%
.height% = height%
.color1& = color1&
.color2& = color2&
.Backgroundcolor& = Backgroundcolor&
.image& = @Crear("hNewPic", width%, height%, Backgroundcolor&)
.Gadget& = Crear("BITMAP",hD% ,SevensegmentLed#.image&, width%, height%)
Endwith
barray#[zaehler%] = SevensegmentLed#
StartPaint -1
pwidth% = width% / 11
pheight% = height% / 13
bmp1& = Crear("BITMAP",hD% ,SevensegmentLed#.image&, width%, height%)
UseBrush 1, SevensegmentLed#.Backgroundcolor&
Rectángulo SevensegmentLed#.x%, SevensegmentLed#.y% - SevensegmentLed#.width%, SevensegmentLed#.height%
Mientras que 1
mx% = @Largo(Led#, k%)
my% = @Largo(Led#, k% + 4)
Case (mx% = 0 And my% = 0) : Romper
Mientras que 1
a% = @Largo(Led#, k% + 4)
b% 0 @Largo(Led#, k% + 8)
Case (a% = 0 And b% = 0) : Romper
USEP 0, 5, SevensegmentLed#.color1&
Line mx% * pwidth%, my% * pheight% - mx% * pwidth% + a% * pwidth%, my% * pheight% + b% * pheight%
mx% = mx% a%
my% = my% + b%
EndWhile
k% = k% + 4
EndWhile
EndPaint
Inc zaehler%
bmp1& = Crear("BITMAP",hD% ,SevensegmentLed#.image&, width%, height%)
Volver SevensegmentLed#.Gadget&
ENDPROC
Proc SevenSegmentLedSet
Parámetros id%, value&
Declarar pwidth%, pheight%, a%, b%, n%, temp$
If id% < 9
barray#[id%].value& = value&
pwidth% = barray#[id%].width% / 11
pheight% = barray#[id%].height% / 13
bmp1& = SevensegmentLed#.image&
StartPaint image&
WhileLoop 1, 8
a% = @Largo(SegmentA#, 0)
b% = @Largo(SegmentA#, 4)
Fill a% *pwidth%, b% * pheight%, barray#[id%].color1&
EndWhile
Select value&
CaseOf 0
temp$ = "abcdef"
CaseOf 1
temp$ = "bc"
CaseOf 2
temp$ = "abged"
CaseOf 3
temp$ = "abgcd"
CaseOf 4
temp$ = "fbgc"
CaseOf 5
temp$ = "afgcd"
CaseOf 6
temp$ = "afedgc"
CaseOf 7
temp$ = "abc"
CaseOf 8
temp$ = "abcdefg"
CaseOf 9
temp$ = "abcdfg"
EndSelect
If barray#[id%].point& = 1
temp$ = temp$ + "p"
Endif
WhileLoop 1, Len(temp$)
Select Mid$(temp$, &LOOP, 1)
CaseOf "a"
a% = @Largo(SegmentA#, 0)
b% = @Largo(SegmentA#, 4)
CaseOf "b"
a% = @Largo(SegmentB#, 0)
b% = @Largo(SegmentB#, 4)
CaseOf "c"
a% = @Largo(SegmentC#, 0)
b% = @Largo(SegmentC#, 4)
CaseOf "d"
a% = @Largo(SegmentD#, 0)
b% = @Largo(SegmentD#, 4)
CaseOf "e"
a% = @Largo(SegmentE#, 0)
b% = @Largo(SegmentE#, 4)
CaseOf "f"
a% = @Largo(SegmentF#, 0)
b% = @Largo(SegmentF#, 4)
CaseOf "g"
a% = @Largo(SegmentG#, 0)
b% = @Largo(SegmentG#, 4)
CaseOf "p"
a% = @Largo(SegmentP#, 0)
b% = @Largo(SegmentP#, 4)
EndSelect
Fill a% * pwidth%, b% * pheight%, barray#[id%].color2&
EndWhile
Endpaint
Endif
ENDPROC
Proc SevenSegmentLedPoint
Parámetros id%, light&
barray#[id%].point& = light&
ENDPROC
Testprogramm : KompilierenMarcaSeparación $I SevenSegment.inc
Declarar bild1&, bild2&, hD%
InitSegments
Proc Diálogo
Declarar hB%, info%, Editar1%, Label1%, OK%, Name$
hD% = @Crear("Dialog",%DeskTop,"Dialogfenster",100,100,600,400)
hB% = @Crear("Button",hD%,"&ENDE",10,10,60,25)
info% = @Crear("Button", hD%, "&Info", 100, 10, 60, 25)
Label1% = @Crear("Text", hD%, "Name : ", 10 ,50, 60, 20)
Editar1% = @Crear("Edit", hD%, "Text", 70, 50, 240, 20)
bild1& = @Crear("hNewPic", 80, 120, RGB(255,255,255))
bild2& = @Crear("hNewPic", 80, 120, RGB(255,255,255))
bmp1& = Crear("BITMAP",hD% ,bild1&,80,120)
DrawSizedPic bild1&, 220, 220 - 80, 120; 0
bild1& = SevenSegmentLed(200,220,40,80,8404992,16776960,10485760)
bild2& = SevenSegmentLed(250,220,40,80,4227072,65280,4210688)
SevenSegmentLedSet(1, 5)
Claro OK% OK% en 0 conjunto
Sinestar encargado Ok% solange OK% igual 0 es
WaitInput
If @Clicked(hB%)
Ok% = 1
ElseIf %Key = 2
Hier se el X (rechts oben Schließen) ausgewertet
OK% = 1
ElseIf @Clicked(info%)
Info Button gedrückt, lo se una einfache MessageBox ausgegeben.
Name$ = @GetText $(Editar1%)
Hier se de el Editar campo el Name gelesen y en el Messagebox ausgegeben.
@MessageBox("Ich bin el Autor : " + Name$, "Info", 0)
<... otro Abfragen y Aktionen ...>
EndIf
EndWhile
Dialogfenster (incl. Button, usw.) entfernen
@DestroyWindow(hD%)
ENDPROC
Hier se el Dialogbox (Procedur) aufgerufen
Diálogo
DisposeSegments
DeleteObject bild1&
DeleteObject bild2&
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. | 15.04.2010 ▲ |
| |
| | ByteAttack | OK! Hier hätte Todavía una Vorschlag como simplemente va.
Anfragen si bajo $WinPath+\Fonts el Schriftart DIGIT.TTF disponible es. Wenn no simplemente hay hin kopieren...
Und ya spielen Farben, Größe, Punkte, Doppelpunkte, Bindestriche etc. ningún papel mehr...
Ejemplo: KompilierenMarcaSeparaciónSet("TrueColor",1)
WindowStyle 24
WindowTitle "Digit"
Window ((%maxX/2)-320),((%maxY/2)-140)-640,280
CLS 0
UseFont "Digit",100,0,0,0,0
TextColor RGB(0,255,0),-1
DrawText 10,10,"0123456789"
TextColor RGB(255,0,0),-1
DrawText 10,120,"01:23 - 4.5."
Wai
Jetzt debería Yo sólo wissen, si uno auch Schriftarten nutzen kann, el no en Windows installiert son ! Das wäre veces interessant a wissen !!! |
| | | | |
| | Thomas Freier | Lo dürften aber genügend geeignete Libre Digifonts en el WEB disponible ser. Z.B.: [...] |
| | | | |
| | ByteAttack | Thomas Freier, Beitrag=56834, Zeitpunkt=21.04.2010
Lo dürften aber genügend geeignete Libre Digifonts en el WEB disponible ser. Z.B.: [...]
Je nee - Is klar... Cuestión mich sólo, si uno auch TTF nutzen kann, el no installiert son. Quasi encima irgendeinen Zugriff en el TTF-Expediente direkt. |
| | | | |
| | | @Marc: Nein, sólo después de "windows"fonts... kopierte. ^ ^
Für media Geschmack macht ihr el viel a kompliziert.
Einfach Bitmapfonttexturmäßig (16*16 Felder en z.B. 512x512-Pixel-Bild) y sólo después de einfacher XY-Formel rauskopieren - es auch superfix oder Tengo el Ziel el Übung missverstanden. ^ ^ |
| | | | |
| | ByteAttack | Sí - Er voluntad sí no Gráficos con se rumschleppen ... |
| | | | |
| | | Entweder malt él el Digits en una hPic oder él läd esta en una hPic - él kann auch una hPic erzeugen y simplemente Bilddaten de el Speicher en él ablegen con SetBitmapBits(hPic,pixelAnzahl,pixelSpeicher) como z.B. en el Pixels.Inc. Mit GetBitmapBits käme uno auch simplemente a el Pixeldaten heran, podría uno como .tex speichern y Datengenerator einbinden en por SetBitmapBits wiederum anzuweisen. ^ ^ |
| | | | |
|
RespuestaTema opciones | 11.199 Views |
ThemeninformationenDieses Thema ha 5 subscriber: |