Bild Abdunkeln

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

ToeB

Betreff: Bild Abdunkeln

BeitragDo, Dez 16, 2010 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo !

Ich bin die ganze zeit am rumbasteln, aber es dauert mir einfach zu lange, und zwar ein Bild (z.B. 800*600) abzudunkeln. Ich mache das mit LockBuffer und Readpixelfast, dann noch die Farben berechnen und dann wieder hinmalen mit WritePixelFast.

Auch geh ich von 0 bis 800 in 2er schritten, und male die pixel dazwischen mit (also statt jeden einzelln male ich immer 4. Ist aber immer noch zu langsam.

1. : Kennt jemand ne schnellere Methode, NUR EIN BILD abzudunkeln ohne 3D ? (Soll rein 2D sein)

2. : Die Farbwerte habe ich immer so berechnet, das ich aus der Hexa-Zahl die r/g/b fraben rausgefunden hab, dann den farbwert dazugerechnet (abgezogen) und dann wieder daraus eine Hexa-Zahl gemacht und gemalt habe. Gibts eine Möglichkeit direkt mit dem Hex-Code zu rechnen ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Sterbendes Lüftlein

BeitragDo, Dez 16, 2010 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

ToeB

BeitragDo, Dez 16, 2010 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Du gehst einfach statt jeden einzellnen Pixel jeden zweiten durch, und ergänz die fehlenden 3 durchgänge manuell mit 3 weiteren Auslese/Mal befehlen...

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Sterbendes Lüftlein

BeitragDo, Dez 16, 2010 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

Eingeproggt

BeitragDo, Dez 16, 2010 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bezweifle zwar, dass 800*600 Pixel mit Read/WritePixelFast noch wirklich flüssig darzustellen sind - noch dazu wo diese Befehle von neueren Graphikkarten ja schlechter supported werden (oder?).

Aber zu deiner Frage, ob man auch Hex-Werte erhöhen / verringern kann ohne in RGB umzuwandeln. Grad ne Idee gehabt und sie funktioniert ^^

BlitzBasic: [AUSKLAPPEN]
Local rgb=123456
Local r=(rgb And $FF0000)/$10000
Local g=(rgb And $FF00)/$100
Local b=rgb And $FF

DebugLog rgb+": "+r+","+g+","+b

rgb=rgb+$010101

r=(rgb And $FF0000)/$10000
g=(rgb And $FF00)/$100
b=rgb And $FF

DebugLog rgb+": "+r+","+g+","+b

WaitKey()
End


Also du gibst die Änderung für RGB ein so wie hier das $010101 für 1,1,1. (vergleiche mit HTML-Farbnotation)

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

ToeB

BeitragDo, Dez 16, 2010 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja danke, hab ich grad schon selber rausgefunden Very Happy

Aber ich brauch es auch nicht echtzeit nur will ich den benutzer nicht 1,2 Sekunden warten bis das PRogramm n Screen von sich Selber gemacht hat und es verdunkelt ... Naja danke trotzdem !



mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Holzchopf

Meisterpacker

BeitragDo, Dez 16, 2010 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Eingeproggt, bei deiner Lösung besteht einfach das Problem, dass aus dem Farbwert $0000FF (Blau) $010200 (gaaaaaaaaaaaaaaaaanz dunkles Grün) würde. Man müsste dann wieder den zu addierenden Wert so anpassen, dass kein Byte überschwappt. Aber dies würde wieder Bit-Bastelei bedeuten und schlussendlich in einem Mehraufwand enden. Das beste wird wohl oder übel der "Umweg" übers Zerschnippseln und anschliessende Zusammensetzen sein.

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

ToeB

BeitragDo, Dez 16, 2010 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habs so gelöst :
Code: [AUSKLAPPEN]
rgb = Min( Max( rgb + $FF050505, $FFFFFFFF ), $FF000000 )


Funzt super Wink

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Holzchopf

Meisterpacker

BeitragDo, Dez 16, 2010 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin ja sonst nicht so nett, aber ich versuche nun noch mal zu erklären, wieso diese Lösung problematisch ist. Diesmal in Code-Form, sollte ja verständlich sein:
BlitzBasic: [AUSKLAPPEN]
Local rgb = $000000FF

rgb = Min( Max( rgb + $FF050505, $FFFFFFFF ), $FF000000 )

Print Hex(rgb)
WaitKey()

Bevor du den Code ausführst: Überleg' dir, was aus Blau ($000000FF) wird, wenn man es ganz wenig heller macht, und wie das Ergebnis in hex auszusehen hätte.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group