Deutsch
Forum

Sehr schnell gefüllten und ungefüllten Kreis zeichnen

 

Pedro
Miguel
Hallo,
Möchte ein gefüllten kreis zeichnen um ein Led zu simulieren. Eine graphic einlesen dauert zu lange.

Hintergrund: Aus der seriellen schnitstellen bekomme ich statusbits die ich als ON / OFF anzeigen möchte. Deswegen soll das zeichnen des Kreis sehr schnell vorgehen. Denn einmal soll ein ungefüllten kreis und sehr kurz darauf kann eventuell ein gefüllten Kreis erscheinen müssen.
Weiss jemand wie das am besten zu machen ist?

Gruss
Pedro
 
17.09.2012  
 



Schnellste weg ist per GDI in ein hPic zeichnen z.B. mit der ellipse-Funktion und

dann konvertierst einfach z.B. die hPic-Pixel in einen Pixelspeicher und voila.

Aus der hPic.inc um die hPic -Pixel als Speicherpixel/ String zu erhalten:
string hPic.bgr2String(long h,_width,_height){

    long sz=( (_width*32\8-1) | 3 +1) * abs(_height)
    mem mem=bitmapInfoHeader

    with mem

        .biSize&        = sizeof(mem)
        .biWidth&       = _width
        .biHeight&      = _height
        .biPlanes%      = 1
        .biBitCount%    = 32
        .biCompression& = BI_RGB
        .biSizeImage&   = sz

    endwith

    mem data=sz
    string ret=""
    case ~getDIBits(hDC,h,,_height,data,mem,) : ret=char$(data,,sz)
    dispose data
    dispose mem
    return ret

}


Wenn Du den Kreis aber wirklich selbst rechnen magst dann einfach mal die

Funktion getCircP anschauen:  [...] 
 
17.09.2012  
 




Pedro
Miguel
Hallo,

Vielen Dank für Deine Hilfe, aber verstehe den code nicht um es anzuwenden. Bin noch nicht sehr fortgeschritten in Xprofan.

Ist die Farbe wählbar mit der der Kreis gefüllt werden soll?

Wie rufe ich diesen code aus?

cls
...
...

Gruss
Pedro
 
17.09.2012  
 



Grüße!

Zeichne einfach einen Kreis mittels den XProfan-Möglichkeiten per usePen; useBrush

und ellipse am besten in ein hPic (create("hNewPic"...).

So kannst Du Farben samt Füllung bestimmen.

Die Funktion oben ist fortgeschrittenes XProfan im Einsatz mit dem Prä-

komilierer und kann damit so wie sie ist ausgeführt werden und erwartet als Parameter

ein hPic-Handle und die Bildausmaße des hPics und liefert eine Zeichenkette zurück

die die Pixel-Farbinformationen als Kette beinhaltet. Solltest Du den Präkompi

nicht im Einsatz haben dann schreibe ich Dir diese Funktion auch um.
 
18.09.2012  
 




Pedro
Miguel
Hallo iF,

Solltest Du den Präkompi
nicht im Einsatz haben dann schreibe ich Dir diese Funktion auch um.

Fals es nicht alzu viel Zeit ist, wäre ich danbar für die Funktion. Vielleicht verstehe ich es dann.
Frank hat schon was gepostet was unter Umstände nutzbar ist, bin aber gespannt auf deine Lösung

Gruss
Pedro
 
18.09.2012  
 



Ich muss gestehen Deine Frage jetzt erst richtig verstanden zu haben - ich verstehe zur Zeit wohl nur "Bahnhof".

Zum Thema:

Meiner Meinung nach gehts am schnellsten mit rein XProfan, wenn Du die LED-Bilder bereits in einem hPic gespeichert hast. Also die Bilder einmal mit create("hPic",... einladen.

Dann erzeugst Du Bitmap-Statics mit create("bitmap",...und wenn Du die Grafik eines Bitmap-Static ändern möchtest dann nutzt einfach diese Nachricht: sendMessage(bitMapControl,370,0,hPic) // stm_setImage um dem Bitmap-Static ein anderes hPic (anderes LED-Bild) zuzuweisen.

Die von Frank beschriebene Methode ist im Gegensatz zu dieser Bitmap-Static-Methode nur für das hWnd geeignet und Du müsstest auch beachten, dass Du eben nicht nur auf das hDC kopierst, sondern zusätzlich auch auf das hDC2.

Diese Bitmap-Static-Methode erspart Dir jedoch auf allenFestern/ Dialogen manuelles Neuzeichen und dürfte dank der Tatsache das Du mit einem einzigen SendMessage das hPic ändern kannst in der Anwendung am einfachsten sein.
 
18.09.2012  
 



Hier ein vollständiger Quelltext hübsch blinkender LEDs:

Herunterladen
externer Download



cls
var orangeLEDBild&=create("hPic",-1,"orange.png")
var gruenLEDBild&=create("hPic",-1,"grün.png")
var cyanLEDBild&=create("hPic",-1,"cyan.png")
var ausLEDBild&=create("hPic",-1,"aus.png")
//
var orangeLEDBitmap&=create("bitmap",%hWnd,orangeLEDBild&,30,30)
var gruenLEDBitmap&=create("bitmap",%hWnd,gruenLEDBild&,50,30)
var cyanLEDBitmap&=create("bitmap",%hWnd,cyanLEDBild&,70,30)

while 1

    waitinput 50

    if rnd(2)

        sendMessage(orangeLEDBitmap&,370,0,orangeLEDBild&)

    else

        sendMessage(orangeLEDBitmap&,370,0,ausLEDBild&)

    endif

    if rnd(2)

        sendMessage(gruenLEDBitmap&,370,0,gruenLEDBild&)

    else

        sendMessage(gruenLEDBitmap&,370,0,ausLEDBild&)

    endif

    if rnd(2)

        sendMessage(cyanLEDBitmap&,370,0,cyanLEDBild&)

    else

        sendMessage(cyanLEDBitmap&,370,0,ausLEDBild&)

    endif

wend

end

Sieht aus wie bei einem "Modem".

544 kB
Hochgeladen:18.09.2012
Ladeanzahl211
Herunterladen
1 kB
Hochgeladen:18.09.2012
Ladeanzahl175
Herunterladen
 
18.09.2012  
 




Pedro
Miguel
Hallo iF,

Vielen Dank. Ich wusste das Du etwas Tolles zauberst. Sehr gut und einfach zu verstehen.
Gut das Xprofan und Dich gibt.

Gruss
Pedro
 
18.09.2012  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

9.033 Betrachtungen

Unbenanntvor 0 min.
Michael Hettner27.08.2021
Joerg10.06.2016
p.specht14.12.2013
funkheld14.12.2013
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

iF (4x)
Pedro Miguel (4x)


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