Deutsch
Forum

Bitmap auf Dialog

 
- 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.: [...] 
 
Gruß Thomas
Windows XP SP2, XProfan X2
21.04.2010  
 




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.
 
Website:  [...] 
Facebook:  [...] 
21.04.2010  
 



@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. ^^
 
21.04.2010  
 




ByteAttack
Ja - Er will ja keine Grafiken mit sich rumschleppen ...
 
Website:  [...] 
Facebook:  [...] 
21.04.2010  
 



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. ^^
 
21.04.2010  
 



 
- 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 :
KompilierenMarkierenSeparieren
Declare 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
window 500,500
 $H Windows.ph
var Pfad$="X:DiversesStyle-7_digital-7Digital-7.ttf"
print ~AddFontResource(addr(Pfad$))----- 1=OK
usefont "Digital-7",30,15,0,0,0
drawtext 10,100,"Test 0123"
print ~RemoveFontResource(addr(Pfad$))-- <>0 = OK
waitinput

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
 
22.04.2010  
 



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. ^^
 
22.04.2010  
 




ByteAttack
@Pascal: Geil ! Das ist mir doch glatt 5 Bannannannnas wert...
 
Website:  [...] 
Facebook:  [...] 
22.04.2010  
 



Vlt. sowas:
KompilierenMarkierenSeparieren
decimals 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.

432 kB
Hochgeladen:22.04.2010
Ladeanzahl142
Herunterladen
27 kB
Hochgeladen:22.04.2010
Ladeanzahl100
Herunterladen
 
22.04.2010  
 




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




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

11.250 Betrachtungen

Unbenanntvor 0 min.
E.T.25.06.2023
Christof Neuß11.07.2018
ByteAttack05.08.2015
Magda06.09.2014
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie