Problem mit Grafiken in Blitz Plus
Übersicht

SicariusBetreff: Problem mit Grafiken in Blitz Plus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe für mein Programm ein paar kleine Grafiken mit Gimp gebastelt, diese haben aber, wenn ich sie benutze immer so komische Flecken drin. Bei einigen Pixeln stimmen die Farben nicht mehr, obwohl die sowohl in Gimp als auch in anderen Programmen problemlos dargestellt werden. Weiß irgendwer woran das liegt? Danke für eure Hilfe! |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lad mal ein Beispielbild hier hoch.
Was mir spontan einfällt, ist das Blitz+ PNG und JPG recht eng sieht. Wenn dein Grafikprogramm sie nicht genau so abspeichert, wie B+ es erwartet, kann es zu Lesefehlern kommen. Lad die Bilder noch mal in Paint rein und speicher sie damit ab. Da ist die Kompression nicht ganz so gut, aber dafür geht's. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Welche Farbtiefe benutzt du den in deinem Spiel und
mit welcher Farbtiefe wurde das Bild gemacht? |
||
BP/B3D/BMax : Lerne Java : Früher mal Lite-C : Gewinner BCC 62 |
Sicarius |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So ich hab mal eins von den Bildern hochgeladen, es ist aber ein .bmp, somit sollte ich ja eigentlich keine Probleme mit B+ haben.
Im Spiel hab ich eine Farbtiefe von 32bit, vom Bild weiß ich es nicht, wo finde ich das denn? So ich hab die Bilder jetzt auch noch mal mit Paint abgespeichert, das hat aber auch nichts gebracht. ![]() |
||
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Rechtsklick auf das Bild, unter Eigenschaften auf Details gehen und dort nach der Bittiefe suchen ![]() aber ich denke, dass das dann wohl eher nicht daran liegt, da die Maximale Farbtiefe einer bmp bei 24 liegt. Skallierst du das Bild im Code oder benutzt du MaskImage? Wird das Bild auf einem anderen Rechner richtig dargestellt? |
||
BP/B3D/BMax : Lerne Java : Früher mal Lite-C : Gewinner BCC 62 |
Sicarius |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ah, es hat eine Bittiefe von 8bit. Sollte die Bittiefe also mit der vom Programm übereinstimmen und sollte ich damit dann lieber .jpeg benutzen?
Es wird sonst gar nicht aufgerufen, nur geladen und gezeichnet. Auf einen anderen PC funktioniert es auch nicht, da konnte ich es aber nur als .exe testen |
||
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Probier es mal mit einer anderen Farbtiefe, wenn das auch nicht geht, dann nimm mal ein anderes Format (.png). Ansonsten weiß ich leider nicht weiter. | ||
BP/B3D/BMax : Lerne Java : Früher mal Lite-C : Gewinner BCC 62 |
Sicarius |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, das werde ich mal ausprobieren, danke
Edit: hat nicht funktioniert, ich werde, sobald ich dafür Zeit habe, die Grafiken nochmal neu mit Paint erstellen |
||
![]() |
biggicekey |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zeig auch mal deinen Code her mit dem du die Grafiken lädst. Vielleicht liegt es ja doch am Alpha oder Maskimage. | ||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
Sicarius |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
aber nicht schimpfen! Ich weiß, dass er schlecht ist, das erkenn sogar ich
Code: [AUSKLAPPEN] AppTitle "Pong"
Graphics 640,480,32,2 SetBuffer BackBuffer () ClsColor 255,255,255 Cls Color 0,0,0 SeedRnd (MilliSecs()) ;Grafiken maus = LoadImage("Grafiken/pointer.bmp") hoch = LoadImage("Grafiken/hoch.bmp") runter = LoadImage("Grafiken/runter.bmp") P = LoadImage("Grafiken/P.bmp") W = LoadImage("Grafiken/W.png") S = LoadImage("Grafiken/S.bmp") Esc = LoadImage("Grafiken/ESc.bmp") ;Sounds Ping = LoadSound("Sounds/Ping.wav") Pong = LoadSound("Sounds/Pong.wav") Seite = LoadSound("Sounds/Seite.wav") FehlerSound = LoadSound("Sounds/Fehler kurz.wav") LevelUpSound = LoadSound ("Sounds/Level Up.wav") HidePointer Repeat Cls Color 0,0,0 SetFont TimesNewRoman100 Text 320,70, "Pong",1,1 SetFont TimesNewRoman40 TextinKasten1 (320,180,"Singlplayer") TextinKasten2 (320,250,"Mulitplayer") TextinKasten3 (320,320,"Steuerung") TextinKasten4 (320,390,"Ende") Mausbewegung (maus) Flip ZeitStartmenue = MilliSecs() If Taste = 1 And ImageRectOverlap (maus,x,y,PositionKastenX1,PositionKastenY1,BreiteKasten1,HoeheKasten1) Then Gosub Singlplayer If Taste = 1 And ImageRectOverlap (maus,x,y,PositionKastenX2,PositionKastenY2,BreiteKasten2,HoeheKasten2) Then Gosub Multiplayer If Taste = 1 And ImageRectOverlap (maus,x,y,PositionKastenX3,PositionKastenY3,BreiteKasten3,HoeheKasten3) Then Repeat Cls SetFont TimesNewRoman60 Text 320,50,"Steuerung",1,1 SetFont TimesNewRoman40 Text 200,140,"Singelplayer",1,1 Text 450,140,"Multiplayer",1,1 Line 60,115,60,275 Line 580,115,580,385 Line 320,115,320,385 Line 60,165,580,165 Line 60,115,580,115 Line 320,385,580,385 Line 60,275,320,275 SetFont TimesNewRoman30 DrawImage hoch,80,180 Text 140,185,"hoch" DrawImage runter,80,230 Text 140,235,"runter" DrawImage W,340,180 Text 400,185, "Spieler 1 hoch" DrawImage S,340,230 Text 400,235,"Spieler 1 runter" DrawImage hoch, 340,280 Text 400,285,"Spieler 2 hoch" DrawImage runter,340,330 Text 400,335,"Spieler 2 runter" DrawImage P,80,330 Text 140,335,"Pause" DrawImage Esc,80,400 Text 140,405,"Zurück" TextinKasten7 (537,435,"Zurück") If Taste = 1 And ImageRectOverlap (maus,x,y,PositionKastenX7,PositionKastenY7,BreiteKasten7,HoeheKasten7) Then Delay 100 Exit EndIf Mausbewegung (maus) Flip Until KeyHit (1) EndIf If Taste = 1 And ImageRectOverlap (maus,x,y,PositionKastenX4,PositionKastenY4,BreiteKasten4,HoeheKasten4) Then Repeat Cls Text 320,100,"Wirklich Beenden?",1,1 TextinKasten5 (160,300,"Ja") TextinKasten6 (480,300,"Nein") Mausbewegung(maus) If Taste = 1 And ImageRectOverlap (maus,x,y,PositionKastenX5,PositionKastenY5,BreiteKasten5,HoeheKasten5) Then Delay 100 End EndIf If Taste = 1 And ImageRectOverlap (maus,x,y,PositionKastenX6,PositionKastenY6,BreiteKasten6,HoeheKasten6) Then Delay 100 Exit EndIf Flip Until KeyHit(1) EndIf If KeyHit(1) Then Repeat Cls Text 320,100,"Wirklich Beenden?",1,1 TextinKasten5 (160,300,"Ja") TextinKasten6 (480,300,"Nein") Mausbewegung(maus) If Taste = 1 And ImageRectOverlap (maus,x,y,PositionKastenX5,PositionKastenY5,BreiteKasten5,HoeheKasten5) Then Delay 100 End EndIf If Taste = 1 And ImageRectOverlap (maus,x,y,PositionKastenX6,PositionKastenY6,BreiteKasten6,HoeheKasten6) Then Delay 100 Exit EndIf Flip Until KeyHit(1) EndIf Forever End ;Unterprogramme .Singlplayer Repeat Cls FehlerAnfang = Fehler ;Gui SetFont TimesNewRoman15 ZeitText$ = "Zeit: " + Float(Int((Zeit/1000)*100))/100 + "s" Text 130,10,ZeitText,0,1 Text 450,10,"Fehler: " + Fehler,0,1 Text 320,10,"Level: " + Level,1,1 For I = 20 To 640 Step 20 Line 320,I,320,I + 10 Next Line 0,20,640,20 ;KIschläger If BX > 450 Then Rect 620,BY - 5,2,40 EndIf If BX < 450 And BX > 440 Then RRY = BY EndIf If BX < 450 Rect 620,RRY,2,40 EndIf ;Schläger steuern If KeyDown (208) Then RLY = RLY + BGe + 2 If KeyDown (200) Then RLY = RLY - BGe - 2 If RLY < 20 Then RLY = 540 If RLY > 540 Then RLY = 20 Rect 20,RLY,2,40 ;Treffer überprüfen und melden If BX < 22 And (BY > RLY + 45 Or BY < RLY - 20) Then For I = 1 To 3 Cls Rect 20,RLY,2,40 Rect 620,RRY,2,40 SetFont TimesNewRoman15 Oval Bx,BY,20,20 ZeitText$ = "Zeit: " + Float(Int((Zeit/1000)*100))/100 + "s" Text 130,10,ZeitText,0,1 Text 320,10,"Level: " + Level,1,1 Text 450,10,"Fehler: " + Fehler,0,1 For J = 20 To 640 Step 20 Line 320,J,320,J + 10 Next Line 0,20,640,20 Color 255,0,0 PlaySound (FehlerSound) SetFont TimesNewRoman60 Text 320,240,"Fehler!!!",1,1 Flip Delay 400 Color 0,0,0 Oval BX,BY,20,20 Text 320,240,"Fehler!!!",1,1 Flip Delay 400 Color 0,0,0 Next ZeitFehler = Zeit - MilliSecs Zeit = Zeit - ZeitFehler Fehler = Fehler + 1 EndIf If BX < 22 And (BY < RLY + 45 Or BY > RLY - 20) And FehlerAnfang = Fehler Then PlaySound (Pong) ;Ball Oval BX,BY,20,20 BX = BX + Bdx BY = BY + Bdy ;Spielbereich begrenzen If BX > 600 Then Bdx = -BGe PlaySound(Pong) EndIf If BX < 22 Then Bdx = BGe EndIf If BY > 450 Then Bdy = -BGe PlaySound(Seite) EndIf If BY < 20 Then Bdy = BGe PlaySound(Seite) EndIf Zeit = MilliSecs () - ZeitStartmenue ;Levelaufstieg If Int(Zeit/1000) = 40 * Level Then Cls PlaySound(LevelUpSound) BGe = BGe + 1 SetFont TimesNewRoman60 Text 320,250,"Level Up!",1,1 SetFont TimesNewRoman15 ZeitText$ = "Zeit: " + (40 * Level) + "s" Text 320,10,"Level: " + Level,1,1 Text 130,10,ZeitText,0,1 Text 450,10,"Fehler: " + Fehler,0,1 For I = 20 To 640 Step 20 Line 320,I,320,I + 10 Next Line 0,20,640,20 Oval BX,BY,20,20 Rect 20,RLY,2,40 Rect 620,RRY,2,40 Flip Delay 1500 Level = Level + 1 ZeitLevelUp = MilliSecs - Zeit Zeit = Zeit - ZeitLevelUp EndIf Flip If KeyHit (25) Then FlushKeys Repeat Cls Rect 20,RLY,2,40 Rect 620,RRY,2,40 SetFont TimesNewRoman15 Oval Bx,BY,20,20 ZeitText$ = "Zeit: " + Float(Int((Zeit/1000)*100))/100 + "s" Text 130,10,ZeitText,0,1 Text 320,10,"Level: " + Level,1,1 Text 450,10,"Fehler: " + Fehler,0,1 For J = 20 To 640 Step 20 Line 320,J,320,J + 10 Next Line 0,20,640,20 SetFont TimesNewRoman60 Text 320,240, "P A U S E",1,1 Flip If KeyHit (25) Then ZeitPause = MilliSecs - Zeit Zeit = Zeit - ZeitPause FlushKeys EndIf If KeyHit (1) Then Ende = 1 Exit EndIf Forever FlushKeys EndIf Until KeyHit(1) Or Ende = 1 Zeit# = 0 Level = 1 Ende = 0 Delay 100 Return .Multiplayer Repeat Cls FehlerAnfangL = FehlerL FehlerAnfangR = FehlerR ;GUI SetFont TimesNewRoman15 ZeitText$ = "Zeit: " + Float(Int((Zeit/1000)*100))/100 + "s" Text 290,10,ZeitText,0,1 For I = 20 To 640 Step 20 Line 320,I,320,I + 10 Next Line 0,20,640,20 Line 280,0,280,20 Line 360,0,360,20 Text 160,10,"Fehler: " + FehlerL,1,1 Text 480,10,"Fehler: " + FehlerR,1,1 ;Schläger rechts steuern If KeyDown (208) Then RRY = RRY + BGe + 2 If KeyDown (200) Then RRY = RRY - BGe - 2 If RRY < 20 Then RRY = 620 If RRY > 540 Then RRY = 20 Rect 620,RRY,2,40 ;Schläger links steuern If KeyDown (31) Then RLY = RLY + BGe + 2 If KeyDown (17) Then RLY = RLY - BGe - 2 If RLY < 20 Then RLY = 620 If RLY > 540 Then RLY = 20 Rect 20,RLY,2,40 ;Treffer überprüfen und melden If BX < 22 And (BY > RLY + 45 Or BY < RLY - 20) Then FehlerL = FehlerL + 1 For I = 1 To 3 Cls SetFont TimesNewRoman15 For J = 20 To 640 Step 20 Line 320,J,320,J + 10 Next Line 0,20,640,20 Line 280,0,280,20 Line 360,0,360,20 Text 160,10,"Fehler: " + FehlerL,1,1 Text 480,10,"Fehler: " + FehlerR,1,1 Rect 20,RLY,2,40 Rect 620,RRY,2,40 Text 290,10,"Zeit: " + Float(Int((Zeit/1000)*100))/100 + "s",0,1 Oval Bx,BY,20,20 SetFont TimesNewRoman40 Color 255,0,0 PlaySound (FehlerSound) Text 160,240,"Fehler!!!",1,1 Flip Delay 400 Color 0,0,0 Oval BX,BY,20,20 Text 160,240,"Fehler!!!",1,1 Flip Delay 400 Color 0,0,0 Next ZeitFehler = Zeit - MilliSecs Zeit = Zeit - ZeitFehler EndIf If BX > 598 And (BY > RRY + 45 Or BY < RRY - 20) Then FehlerR = FehlerR + 1 For I = 1 To 3 Cls SetFont TimesNewRoman15 For J = 20 To 640 Step 20 Line 320,J,320,J + 10 Next Line 0,20,640,20 Line 280,0,280,20 Line 360,0,360,20 Text 160,10,"Fehler: " + FehlerL,1,1 Text 480,10,"Fehler: " + FehlerR,1,1 Rect 20,RLY,2,40 Rect 620,RRY,2,40 Text 290,10,"Zeit: " + Float(Int((Zeit/1000)*100))/100 + "s",0,1 Oval Bx,BY,20,20 SetFont TimesNewRoman40 PlaySound (FehlerSound) Color 255,0,0 Text 480,240,"Fehler!!!",1,1 Flip Delay 400 Color 0,0,0 Oval BX,BY,20,20 Text 480,240,"Fehler!!!",1,1 Flip Delay 400 Color 0,0,0 Next ZeitFehler = Zeit - MilliSecs Zeit = Zeit - ZeitFehler EndIf If BX > 598 And (BY < RRY + 45 Or BY > RRY - 20) And FehlerAnfangR = FehlerR Then PlaySound (Pong) If BX < 22 And (BY < RLY + 45 Or BY > RLY - 20) And FehlerAnfangL = FehlerL Then PlaySound (Pong) ;Ball Oval BX,BY,20,20 BX = BX + Bdx BY = BY + Bdy ;Spielbereich begrenzen If BX > 598 Then Bdx = -BGe EndIf If BX < 22 Then Bdx = BGe EndIf If BY > 450 Then Bdy = -BGe PlaySound (Seite) EndIf If BY < 20 Then Bdy = BGe PlaySound(Seite) EndIf Zeit = MilliSecs () - ZeitStartmenue ;Levelaufstieg If Int(Zeit/1000) = 40 * Level Then Cls BGe = BGe + 1 PlaySound(LevelUpSound) SetFont TimesNewRoman60 Text 320,250,"Level Up!",1,1 SetFont TimesNewRoman15 Text 290,10,"Zeit: " + Float(40 * Level) + "s",0,1 For J = 20 To 640 Step 20 Line 320,J,320,J + 10 Next Line 0,20,640,20 Line 280,0,280,20 Line 360,0,360,20 Text 160,10,"Fehler: " + FehlerL,1,1 Text 480,10,"Fehler: " + FehlerR,1,1 Oval BX,BY,20,20 Rect 20,RLY,2,40 Rect 620,RRY,2,40 Flip Delay 1500 Level = Level + 1 ZeitLevelUp = MilliSecs - Zeit Zeit = Zeit - ZeitLevelUp EndIf If KeyHit (25) Then FlushKeys Repeat Cls SetFont TimesNewRoman15 Text 290,10,"Zeit: " + Float(Int((Zeit/1000)*100))/100 + "s",0,1 For J = 20 To 640 Step 20 Line 320,J,320,J + 10 Next Line 0,20,640,20 Line 280,0,280,20 Line 360,0,360,20 Text 160,10,"Fehler: " + FehlerL,1,1 Text 480,10,"Fehler: " + FehlerR,1,1 Oval BX,BY,20,20 Rect 20,RLY,2,40 Rect 620,RRY,2,40 SetFont TimesNewRoman60 Text 320,240, "P A U S E",1,1 Flip If KeyHit (25) Then ZeitPause = MilliSecs - Zeit Zeit = Zeit - ZeitPause FlushKeys EndIf If KeyHit (1) Then Ende = 1 Exit EndIf Forever FlushKeys EndIf Flip Until KeyHit(1) Or Ende = 1 Level = 1 FehlerR = 0 FehlerL = 0 Delay 100 Return |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
...dann mach ihn besser. Zum Beispiel all die Magischen Zahlen in Konstanten packen - jede einzelne Zeile geht kaputt, wenn du irgendeine andere ändern würdest. Fensterhöhe und Breite z.B. - oder willst du alle Instanzen von "640" für eine andere Auflösung per Hand ändern?
Für GoSub gibt es auch keinen Grund - benutze gleich eine Funktion. Ansonsten muss man dir das debuggen wirklich selbst überlassen, weil kein anderer Jemals durchsehen kann, wo Variablen gesetzt werden. Wer weiß an welcher Stelle da ggf. was über die Bilder gezeichnet wird... Das kannst du immerhin prüfen, indem du die Bilder ohne den ganzen Rest lädst und anzeigst - sind die okay, liegt es am restlichen Code. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Lobby |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht solltest du auch mal Vergleichsbilder für "wie es aussieht" und "wie es aussehen müsste" hochladen.
Nach allem was ich bisher gehört habe, könnte es durchaus an der bereits genannten Maskierfarbe liegen. Die ist standardmäßig für alle Bilder 0, 0, 0 (also schwarz). Eine Lösung könnte das Verwenden von DrawBlock ![]() ![]() ![]() |
||
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux |
Sicarius |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, ich habe jetzt mal DrawBlock benutzt und jetzt funktioniert es. Ein ganz großes Dankeschön an alle, die mir geholfen haben!
Keine Sorge, ich werde mein nächstes Programm besser machen, nur das aktuelle ist fast fertig und der Aufwand es zu verbessern ist viel größer. Aber ich werde bei meinen nächsten Programm daran denken. |
||
![]() |
Spark Fountain |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dachte ich mir, dass es an DrawImage liegt ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group