Fehler bei Setcolor 0,0,0 für Drawtext
Übersicht

funkheldBetreff: Fehler bei Setcolor 0,0,0 für Drawtext |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo, guten Tag.
Ich habe ein Bild als grünes Rechteck in einem Image. Der Hintergrund ist grau mit Setclscolor. Dieses Rechteck kann ich mit den Tasten drehen und bewegen. Für den Drawtext habe ich "setcolor 255,255,255". Wenn ich den Text jetzt auf schwarz setze mit "setcolor 0,0,0", wird auch das Imagerechteck schwarz. Was habe ich für ein Fehler gemacht? Danke. Gruss Code: [AUSKLAPPEN] SuperStrict Import brl.max2d SetGraphicsDriver D3D9Max2DDriver() Graphics 600,400 global rot:float global xs:float,ys:float,x1:float,y1:float,delta:float Global bild:TImage=CreateImage(70,40) SetColor 0,255,0 DrawRect 0,0,70,40 SetColor 255,0,0 Plot 15,20 GrabImage bild,0,0 cls xs=310 ys=190 delta=2 setclscolor 220,220,220 Repeat Cls Select True Case KeyDown(KEY_q) rot=rot-1 Case KeyDown(KEY_e) rot=rot+1 Case KeyDown(KEY_w) y1=Sin(rot)*delta x1=Cos(rot)*delta xs=xs+x1 ys=ys+y1 Case KeyDown(KEY_s) y1=Sin(rot)*delta x1=Cos(rot)*delta xs=xs-x1 ys=ys-y1 End Select SetRotation ( rot ) SetImageHandle(bild,35,20) setscale 0.8,0.9 DrawImage bild,xs,ys SetRotation 0 setscale 1.0,1.0 setcolor 255,255,255 >>>>> wenn ich den auf Setcolor 0,0,0 setze ist auch das Image schwarz. DrawText rot,10,10 Flip Until KeyHit (KEY_ESCAPE) |
||
- Zuletzt bearbeitet von funkheld am Mo, Aug 15, 2016 13:28, insgesamt 3-mal bearbeitet
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wo in deinem Code ist der 'fehlerhafte' SetColor? | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
SetColor betrifft alle nachfolgenden Grafikbefehle. Es multipliziert jeden Farbkanal mal dem eingegebenen Wert.
Als Beispiel: Pixelfarbe 255,255,255 SetColor 255,128,0 Zuerst müssen die Werte normalisiert werden (auf eine Skala von 0.0-1.0 gebracht werden). Dazu werden sie durch 255 dividiert. Pixelfarbe 1.0, 1.0, 1.0 SetColor 1.0,0.5,0.0 Jetzt werden die Werte multipliziert: Pixelfarbe 1.0,0.5,0.0 Und wieder mal 255 gerechnet um die Originalskala zu bekommen: Pixelfarbe 255,128,0 Das ist, was passiert, wenn du SetColor mit einem der "normalen" Grafikbefehle (z.B. DrawText, DrawRect oder so) verwendest, da diese Befehle von sich aus nur weiße Pixel zeichnen. Wenn du ein Bild zeichnest, dann schaut das z.B. so aus: Pixelfarbe 128,192,64 SetColor 255,128,0 Pixelfarbe 0.5,0.75,0.25 SetColor 1.0,0.5,0.0 Pixelfarbe 0.5,0.375,0.0 Pixelfarbe 128,96,0 Also wenn du SetColor(0,0,0) machst, dann wird jeder Farbkanal mit 0 multipliziert, und egal was vorher drin war, es gibt dir nur schwarze Pixel. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
funkheld |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
------------------------------
SetRotation 0 setscale 1.0,1.0 setcolor 255,255,255 >>>>> wenn ich den alleine auf Setcolor 0,0,0 setze ist auch das Image schwarz. DrawText rot,10,10 ------------------------------ |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
[syntax="bmax"]Bei deinem GRABIMAGE ist nix falsch gelaufen. Dein Bild ist weiterhin grün mit roten Punkt drin. Es wird beim DRAWIMAGE nur falsch gezeichnet!
Du musst vor dem DRAWIMAGE das Setcolor wieder auf 255,255,255 "resetten". Nur so werden die Images in ihren Originalfarben gezeichnet. BlitzMax: [AUSKLAPPEN] ..... |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
funkheld |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für deine Hilfe.
Ist das ein Fehler in Blitzmax bitte oder ist das so gewollt mit dem Setcolor 255,255,255 resetten vor einem Image. Danke. Gruss |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist eindeutig ein Feature! Du kannst Bilder vor dem Malen damit "einfärben". Zwie Möglichkeiten fallen mir dazu dofort ein. die erste ist ein "Fade-Out". Der Bildschirm wird am Ende der Spielrunde schwarz:
BlitzMax: [AUSKLAPPEN] Local Hell%=255 und das zweite sind Schatten: BlitzMax: [AUSKLAPPEN]
|
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kannst du dir bitte noch mal meinen Post von oben durchlesen? Da steht exakt beschrieben, was passiert. Und das ist ein enormes Feature. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
funkheld |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Zuerst müssen die Werte normalisiert werden (auf eine Skala von 0.0-1.0 gebracht werden). Dazu werden sie durch 255 dividiert. Ich dachte diesen 1.0 Wert gibt es nur in Opengl. Ich habe doch kein Opengl eingeschaltet. Gruss |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nö, es ist nur eine andere Skala, damit das Rechnen funktioniert.
Du kannst auch multiplizieren und danach durch 256 dividieren, ist voll wurscht. Hättest du dir das Beispiel durchgelesen und versucht zu behirnen, dann hättest du es verstanden gehabt. Du kannst davon ausgehen, dass Leute hier Sachen mit einem Sinn posten und verstehen, worum es geht. Wenn es nicht klar ist, dann fragen wir nach. Wir machen das hier schon seit über einem Jahrzehnt ![]() |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group