Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 128
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 186
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Gehe zum ersten neuen Beitrag Acer Aspire 8745ZG fährt...
Aufrufe: 69, Antworten: 6
Gehe zum ersten neuen Beitrag Rechner fährt herunter,...
Aufrufe: 156, Antworten: 9
Gehe zum ersten neuen Beitrag avs4you_com Lizenz oder Abo?
Aufrufe: 82, Antworten: 4
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14.03.2009, 07:48   #1 (Direktlink)
KHR
Erfolgreich angemeldet
 
Benutzerbild von KHR
 
Registriert seit: 19.02.2009
Ort: Elsaß
Alter: 57
Beiträge: 13
Standard Farbunterschied erkennen/berechnen

Hallo miteinander,

ich suche eine Routine, mit der sich berechnen läßt, ob zwei Farben für unser Auge genug von einander abweichen, sagen wir genug "Farbkontrast" haben um deutliche Abgrenzug zu ermöglichen.

Als Beispiel habe ich hier einen Democode in XProfan, der Rechtecke mit Zufallsfarben darstellt.

Meist weichen diese Farben kräftig von einander ab. Manchmal sind sie aber leider sehr verwandt.

Wie kann ich das im Programm-Ablauf erkennen, um z.B. die Zufallsfarbe neu berechnen zu lassen??

Code:
declare farbe&, size&

cls
randomize

size& = 210

while 1

   whileloop (size&/10/2)
   
      farbe& = @rgb(@rnd(256),@rnd(256),@rnd(256))
      
      usebrush 1,farbe&
      UsePen 5,0,farbe&
      rectangle   (&loop*10),(&loop*10) - (size&-(&loop*10)),(size&-(&loop*10))
      
   
      
   endwhile
   
   waitinput 400
   cls
   
endwhile
Ich hab diese Frage auch auf XProfan.com gestellt um vielleicht ein breiteres Spektrum an Möglichkeiten zu bekommen.

Achso: Wenn ein (noch)nicht Profaner das ausprobieren will: hier der Link zum Download der Freeversion (Interpreter) XProfan 10 http://xprofan.de/download/xprofanfree.exe
__________________
Gruß


Karl-Heinz

Xprofan 11.1, P2CPP 2.0
BASCOM und ATMEL Fan

Geändert von KHR (14.03.2009 um 08:09 Uhr)
KHR ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 14.03.2009, 09:41   #2 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

So was in der Art?

Code:
declare farbe&, size&, r&, g&, b&, diff&, mix&, lastmix&

cls
randomize

size& = 210

while 1

   whileloop (size&/10/2)
   
      while 1
      
        r&=Rnd(256)
        g&=Rnd(256)
        b&=Rnd(256)
        mix&=(r&+g&+b&)/3
      
        diff&=Abs(lastmix&-mix&)

        Case diff&<48:CONTINUE
        
        lastmix&=mix&
        BREAK
        
      endwhile
      
      farbe& = @rgb(r&,g&,b&)
      
      usebrush 1,farbe&
      UsePen 5,0,farbe&
      rectangle   (&loop*10),(&loop*10) - (size&-(&loop*10)),(size&-(&loop*10))
      
   
      
   endwhile
   
   waitinput 400
   cls
   
endwhile
Hier in der Zeile kannst du bestimmen, wie hoch der Differenzwert sein muss (geh aber nicht groß über 120, weil ansonsten Situationen auftreten können, dass die Differenz nicht erreicht werden kann. Verzögert auch die Ablaufdauer):

Code:
Case diff&<48:CONTINUE
Erklärung: Die Zufallsfarbe wird in schwarz-weiß umgerechnet und mit der vorherigen Farbe verglichen. Ist der Unterschied zu gering, wird eine neue Zufallsfarbe ermittelt.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.

Geändert von Frabbing (14.03.2009 um 09:50 Uhr)
Frabbing ist offline   Mit Zitat antworten
Alt 14.03.2009, 10:15   #3 (Direktlink)
KHR
Erfolgreich angemeldet
 
Benutzerbild von KHR
 
Registriert seit: 19.02.2009
Ort: Elsaß
Alter: 57
Beiträge: 13
Standard

Hallo Frank,


danke für die fixe Antwort.

Ja, das ist es was ich gesucht habe. So kann man die Kontrast wirklich feststellen und beinflussen.
__________________
Gruß


Karl-Heinz

Xprofan 11.1, P2CPP 2.0
BASCOM und ATMEL Fan
KHR ist offline   Mit Zitat antworten
Alt 14.03.2009, 11:28   #4 (Direktlink)
KHR
Erfolgreich angemeldet
 
Benutzerbild von KHR
 
Registriert seit: 19.02.2009
Ort: Elsaß
Alter: 57
Beiträge: 13
Standard

Hallo miteinander, Hallo Frank,

hab zum ausprobieren mal in die Radler reingestrickt.

Code:
' Fahrräder
' by Karl-Heinz Rattay / 2009
'
' einfach ausprobieren
'
' Wems gefällt der kann ja einen screensaver draus machen!
'
' Dieses Modul ist einfach so wie es ist. Wems nicht gefällt, der kann umstricken!!
'
declare  r&, g&, b&, diff&, mix&, lastmix&

declare Zaehler&

proc zeichne

    parameters c&,hpos%,vpos%, size%
    usepen   0,(size%/5),c&
    useBrush 0,c&
    ellipse (hpos%-(Size%/1.5)),(vpos%-(Size%/1.5)) - (hpos%+(Size%/1.5)),(vpos%+(Size%/1.5))
    ellipse ((hpos%+size%*2.0)-(Size%/1.5)),(vpos%-(Size%/1.5)) - ((hpos%+size%*2.0)+(Size%/1.5)),(vpos%+(Size%/1.5))
    usepen   0,(size%/8),c&
    moveto hpos%,vpos%
    lineto (hpos%+(size%/6)),(vpos% - (Size%*1.05))
    lineto (hpos%+(size%*1.7))   , (vpos% - (Size%*0.95) + (size%/6))
    lineto (hpos%+(size%*1.1))  , vpos%
    moveto (hpos%+(size%/4)),(vpos% - (Size%*1.3))
    lineto (hpos%+(size%/6)),(vpos% - (Size%*1.3))
    lineto (hpos%+(size%/6)),(vpos% - (Size%*1))
    lineto (hpos%+(size%*1.1))  , vpos%
    lineto (hpos%+(size%*2))  , vpos%
    lineto (hpos%+(size%*1.7))   , (vpos% - (Size%*1) + (size%/6))
    lineto (hpos%+(size%*1.7))   , (vpos% - (Size%*1) -(size%/7))
    moveto (hpos%+(size%*1.7)-(size%/5))   , (vpos% - (Size%*1.1) -(size%/8))
    lineto (hpos%+(size%*1.7)+(size%/5))   , (vpos% - (Size%*1.1) -(size%/8))
    moveto (hpos%+(size%*1.1))  , (vpos%-(size%*0.3))
    lineto (hpos%+(size%*1.1))  , (vpos%+(size%*0.3))

Endproc

cls
showmax

while 1

   inc zaehler&

   if zaehler& > 80
       
      while 1
    
         r&    = Rnd(256)
         g&    = Rnd(256)
         b&    = Rnd(256)
         mix&  =(r&+g&+b&)/3
       
         diff& = Abs(lastmix&-mix&)
 
         Case diff&<40   :  CONTINUE
         
         lastmix& = mix&
         BREAK
         
         
      endwhile
      
      zeichne  @rgb(r&,g&,b&) , \
      ((%maxx*0.6) + @rnd(%maxx/4)) , \
      (100+@rnd(@rnd(%maxy*0.85))) ,  \
      (15+@rnd(40))
      zaehler& = 1

   endif

   copyBmp 1,0 - %maxx,%maxy > 0,0;0
   
   
   case @IsKey(27) : end '   ESC gedrückt
  

endwhile


Für (noch)nicht Profaner dies auprobieren wollen der Link zum Download der Freeversion (Interpreter) XProfan 10 http://xprofan.de/download/xprofanfree.exe
__________________
Gruß


Karl-Heinz

Xprofan 11.1, P2CPP 2.0
BASCOM und ATMEL Fan
KHR ist offline   Mit Zitat antworten
Alt 14.03.2009, 17:44   #5 (Direktlink)
iF_
Weiß worum´s geht
 
Benutzerbild von iF_
 
Registriert seit: 08.02.2009
Ort: Berlin
Beiträge: 226
Standard

Ich glaube er meint eher sowas:

Code:
proc FARBAEHNLICHKEIT ' RGB-linearer (nicht wie unsere Augen!) Gleichheitsfaktor zu Schwarz

    PARAMETERS FARBE1&,FARBE2&
    RETURN (ABS(GETRVALUE(FARBE1&)-GETRVALUE(FARBE2&))+ABS(GETGVALUE(FARBE1&)-GETGVALUE(FARBE2&))+ABS(GETBVALUE(FARBE1&)-GETBVALUE(FARBE2&))) * 0.001307189542483660130718954248 ' = 1/(255*3)

endproc
Die Lösung von ganz oben, R+G+B zu addieren, ist leider farbenblind.
__________________
Programmieren für Anfänger.

Geändert von iF_ (14.03.2009 um 17:52 Uhr) Grund: Faktor erklärt.
iF_ ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 14.03.2009, 18:46   #6 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Zitat:
Die Lösung von ganz oben, R+G+B zu addieren, ist leider farbenblind.
Die Lösung basiert auf einer Mittlung. Ich hatte beschrieben, wie sie funktioniert.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.

Geändert von Frabbing (14.03.2009 um 18:57 Uhr)
Frabbing ist offline   Mit Zitat antworten
Alt 14.03.2009, 19:15   #7 (Direktlink)
KHR
Erfolgreich angemeldet
 
Benutzerbild von KHR
 
Registriert seit: 19.02.2009
Ort: Elsaß
Alter: 57
Beiträge: 13
Standard

Hallo miteinander,


so jetzt hab ich auch Davids Lösung in die Fahrräder reingebaut.

Also ich glaube einen Unterschied zu erkennen. Ihr auch?

Code:
' Fahrräder
' by Karl-Heinz Rattay / 2009
'
' einfach ausprobieren
'
' Wems gefällt der kann ja einen screensaver draus machen!
'
' Dieses Modul ist einfach so wie es ist. Wems nicht gefällt, der kann umstricken!!
'
declare  r&, g&, b&, diff&, mix&, lastmix&

declare Zaehler&

proc zeichne

    parameters c&,hpos%,vpos%, size%
    usepen   0,(size%/5),c&
    useBrush 0,c&
    ellipse (hpos%-(Size%/1.5)),(vpos%-(Size%/1.5)) - (hpos%+(Size%/1.5)),(vpos%+(Size%/1.5))
    ellipse ((hpos%+size%*2.0)-(Size%/1.5)),(vpos%-(Size%/1.5)) - ((hpos%+size%*2.0)+(Size%/1.5)),(vpos%+(Size%/1.5))
    usepen   0,(size%/8),c&
    moveto hpos%,vpos%
    lineto (hpos%+(size%/6)),(vpos% - (Size%*1.05))
    lineto (hpos%+(size%*1.7))   , (vpos% - (Size%*0.95) + (size%/6))
    lineto (hpos%+(size%*1.1))  , vpos%
    moveto (hpos%+(size%/4)),(vpos% - (Size%*1.3))
    lineto (hpos%+(size%/6)),(vpos% - (Size%*1.3))
    lineto (hpos%+(size%/6)),(vpos% - (Size%*1))
    lineto (hpos%+(size%*1.1))  , vpos%
    lineto (hpos%+(size%*2))  , vpos%
    lineto (hpos%+(size%*1.7))   , (vpos% - (Size%*1) + (size%/6))
    lineto (hpos%+(size%*1.7))   , (vpos% - (Size%*1) -(size%/7))
    moveto (hpos%+(size%*1.7)-(size%/5))   , (vpos% - (Size%*1.1) -(size%/8))
    lineto (hpos%+(size%*1.7)+(size%/5))   , (vpos% - (Size%*1.1) -(size%/8))
    moveto (hpos%+(size%*1.1))  , (vpos%-(size%*0.3))
    lineto (hpos%+(size%*1.1))  , (vpos%+(size%*0.3))

Endproc

proc FARBAEHNLICHKEIT

    PARAMETERS FARBE1&,FARBE2&
    RETURN (ABS(GETRVALUE(FARBE1&)-GETRVALUE(FARBE2&))+ABS(GETGVALUE(FARBE1&)-GETGVALUE(FARBE2&))+ABS(GETBVALUE(FARBE1&)-GETBVALUE(FARBE2&))) * 0.001307189542483660130718954248

endproc


cls
showmax

randomize

while 1

   inc zaehler&

   if zaehler& > 80
       
      while 1
    
      
        r&=Rnd(256)
        g&=Rnd(256)
        b&=Rnd(256)
        mix&=@rgb(r&,g&,b&)

        Case FARBAEHNLICHKEIT (lastmix&,mix&) :CONTINUE
        
        lastmix&=mix&
        BREAK
 
         
      endwhile
      
      zeichne  @rgb(r&,g&,b&) , \
      ((%maxx*0.6) + @rnd(%maxx/4)) , \
      (100+@rnd(@rnd(%maxy*0.85))) ,  \
      (15+@rnd(40))
      zaehler& = 1

   endif

   copyBmp 1,0 - %maxx,%maxy > 0,0;0
   
   
   case @IsKey(27) : end '   ESC gedrückt
  

endwhile
__________________
Gruß


Karl-Heinz

Xprofan 11.1, P2CPP 2.0
BASCOM und ATMEL Fan
KHR ist offline   Mit Zitat antworten
Alt 14.03.2009, 19:28   #8 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Davids Lösung basiert auf einer Fliesskommazahl von 0 bis 1. Du kannst die Lösungen so nicht kombinieren.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 14.03.2009, 21:18   #9 (Direktlink)
iF_
Weiß worum´s geht
 
Benutzerbild von iF_
 
Registriert seit: 08.02.2009
Ort: Berlin
Beiträge: 226
Standard Case FARBAEHNLICHKEIT (lastmix&,mix&) :CONTINUE

Er müsste die Zeile

Case FARBAEHNLICHKEIT (lastmix&,mix&) :continue

ersetzen in

Case FARBAEHNLICHKEIT(lastmix&,mix&)<0.37 :continue

was dann ganz hübsch wirkt.
__________________
Programmieren für Anfänger.
iF_ ist offline   Mit Zitat antworten
Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Stichworte
farbkonrast ermitteln

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Farbunterschied zwischen Mac und Win Phill Allgemein 2 18.01.2008 18:48
DIV-Länge berechnen Barzi Sonstige Programmiersprachen 6 25.03.2007 17:07
Datum berechnen ELeX PHP/MySQL 1 09.10.2005 02:06
Bildschirmauflösung berechnen Anyanka Allgemein 12 28.02.2005 17:27
Steuern berechnen hunny Allgemein 4 16.12.2003 19:22



Alle Zeitangaben in WEZ +2. Es ist jetzt 11:56 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2