OpenScreen, Sprite Problem
- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
OpenScreen, Sprite Problem
Eine Frage,
kann man ein Screen öffnen bzw. ändern das ein geladens Sprite genau in den Bildschirm passt?
Ohne ASM!
So ähnlich:
OpenScreen(SpriteWidth(#BalBla), SpriteHeight(#BlaBla), 32, "BlaBla")
Kann mir da jemand helfen?
kann man ein Screen öffnen bzw. ändern das ein geladens Sprite genau in den Bildschirm passt?
Ohne ASM!
So ähnlich:
OpenScreen(SpriteWidth(#BalBla), SpriteHeight(#BlaBla), 32, "BlaBla")
Kann mir da jemand helfen?
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
Ich ahbe jetzt eine Lösung
Nur mit den problem es ist extrem lahm
*zzz*
Weiß jemand wi es schneller geht?
Code:
LoadImage(0, File$)
UseImage(0)
ResizeImage(0, 800, 600)
OpenScreen(800,600,32,"V1")
CreateSprite(0,800,600)
For x=0 To 800
For y=0 To 600
StartDrawing(ImageOutput())
Color = Point(x, y)
StopDrawing()
StartDrawing(SpriteOutput(0))
Plot(x,y,Color)
StopDrawing()
Next
Next
[EDIT]
evtl. mit Memory
aber da habe ich keine Ahnung von
Nur mit den problem es ist extrem lahm
*zzz*
Weiß jemand wi es schneller geht?
Code:
LoadImage(0, File$)
UseImage(0)
ResizeImage(0, 800, 600)
OpenScreen(800,600,32,"V1")
CreateSprite(0,800,600)
For x=0 To 800
For y=0 To 600
StartDrawing(ImageOutput())
Color = Point(x, y)
StopDrawing()
StartDrawing(SpriteOutput(0))
Plot(x,y,Color)
StopDrawing()
Next
Next
[EDIT]
evtl. mit Memory
aber da habe ich keine Ahnung von
Zuletzt geändert von unix am 19.07.2005 18:51, insgesamt 1-mal geändert.
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
Du kannst doch das Bild auch direkt auf den Bildschirm zeichnen:
Oder wenn du lieber Sprites benutzt:
Achja, benutz bitte Codetags! 
Code: Alles auswählen
LoadImage(0, File$)
OpenScreen(800,600,32,"V1")
StartDrawing(ScreenOutput())
DrawImage(0,0,800,600)
StopDrawing()
Code: Alles auswählen
LoadImage(0, File$)
OpenScreen(800,600,32,"V1")
createSprite(0,800,600)
StartDrawing(SpriteOutput(0))
DrawImage(0,0,800,600)
StopDrawing()

- unix
- Beiträge: 361
- Registriert: 15.02.2005 19:25
- Wohnort: Zwischen Coburg und Bamberg :-)
- Kontaktdaten:
Eure vorschläge sind gut aber so fuct es nicht!
Schaut
meun prog ist fertig:
InitSprite()
InitKeyboard()
Global rr.w
Global gg.w
Global bb.w
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
UseJPEGImageEncoder()
UsePNGImageEncoder()
Gosub Voreinstellung
StandardFile$ = ""
Pattern$ = "Bitmaps (*.bmp)|*.bmp|Portable Network Graphic (*.png)|*.png|Join Picture Expert Group (*.jpeg)|*.jpeg|Targa (*.tga)|*.tga|Tiff (*.tiff)|*.tiff"
Pattern = 0
File$ = OpenFileRequester("Bitte Datei zum Laden auswählen", StandardFile$, Pattern$, Pattern)
LoadImage(0,File$)
UseImage(0)
ResizeImage(0, 800, 600)
OpenScreen(800,600,32,"V1")
CreateSprite(0,800,600)
For y=0 To 600
For x=0 To 800
UseImage(0)
StartDrawing(ImageOutput())
color = Point(x, y)
If mm$ = "Normal" : Gosub Normal
ElseIf mm$ = "SW" : Gosub SW
ElseIf mm$ = "Grau" : Gosub Grau
ElseIf mm$ = "Farbe" : Gosub Farbe
ElseIf mm$ = "Um" : Gosub Um : EndIf
Plot(x,y,color)
StopDrawing()
StartDrawing(SpriteOutput(0))
Plot(x,y,color)
StopDrawing()
Next
Next
Repeat
ClearScreen(0,0,0)
ExamineKeyboard()
DisplaySprite(0,0,0)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
Result = MessageRequester("Speicher","Wollen Sie das Bild Speichern?",#PB_MessageRequester_YesNo)
If Result = 6
Gosub Speichern
Else
End
EndIf
Voreinstellung:
OpenWindow(0,0,0,250,380,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Modus-einstellung") And CreateGadgetList(WindowID(0))
OptionGadget(0, 30, 20, 120, 20, "Normal")
OptionGadget(1, 30, 45, 120, 20, "Schwarz-Weiß")
OptionGadget(2, 30, 70, 120, 20, "Graustufen")
OptionGadget(3, 30, 95, 120, 20, "Farbe")
OptionGadget(4, 30, 120, 120, 20, "Farben umkehren")
SetGadgetState(0,1) ; wir setzen die zweite Option als aktiv
TextGadget (101, 30, 150, 250, 20, "Rot: "+"0"+"%")
ScrollBarGadget(102, 30, 170, 190, 20, 0, 109, 10)
SetGadgetState (102, 0)
TextGadget (111, 30, 210, 250, 20, "Grün: "+"0"+"%")
ScrollBarGadget(112, 30, 230, 190, 20, 0, 109, 10)
SetGadgetState (112, 0)
TextGadget (121, 30, 270, 250, 20, "Blau: "+"0"+"%")
ScrollBarGadget(122, 30, 290, 190, 20, 0, 109, 10)
SetGadgetState (122, 0)
ButtonGadget(999, 75, 330, 100, 30, "Übernehmen")
Repeat
If GetGadgetState(3) = 0
DisableGadget(101, 1)
DisableGadget(102, 1)
DisableGadget(111, 1)
DisableGadget(112, 1)
DisableGadget(121, 1)
DisableGadget(122, 1)
Else
DisableGadget(101, 0)
DisableGadget(102, 0)
DisableGadget(111, 0)
DisableGadget(112, 0)
DisableGadget(121, 0)
DisableGadget(122, 0)
EndIf
SetGadgetText(101, "Rot: "+Str(GetGadgetState(102))+"%")
SetGadgetText(111, "Grün:"+Str(GetGadgetState(112))+"%")
SetGadgetText(121, "Blau:"+Str(GetGadgetState(122))+"%")
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
End
EndIf
If GetGadgetState(0) = 1 : mm$ = "Normal"
ElseIf GetGadgetState(1) = 1 : mm$ = "SW"
ElseIf GetGadgetState(2) = 1 : mm$ = "Grau"
ElseIf GetGadgetState(3) = 1 : mm$ = "Farbe"
ElseIf GetGadgetState(4) = 1 : mm$ = "Um" : EndIf
rr = GetGadgetState(102)
gg = GetGadgetState(112)
bb = GetGadgetState(122)
Until EventGadgetID() = 999
CloseWindow(0)
Return
Normal:
Return
SW:
R = Red(color)
G = Green(color)
B = Blue(color)
colorsw = (R + G + B) / 3
If colorsw > 128
color = $FFFFFF
ElseIf colorsw =< 128
color = $000000
EndIf
Return
Grau:
R = Red(color)
G = Green(color)
B = Blue(color)
colorg = (R + G + B) / 3
color = RGB(colorg,colorg,colorg)
Return
Farbe:
R = Red(color)
G = Green(color)
B = Blue(color)
R = R * rr / 100
G = G * gg / 100
B = B * bb / 100
color = RGB(R,G,B)
Return
Um:
Rf.f = Red(color)
Gf.f = Green(color)
Bf.f = Blue(color)
R = Abs(Rf.f - 255)
G = Abs(Gf.f - 255)
B = Abs(Bf.f - 255)
color = RGB(R,G,B)
Return
Speichern:
newsave:
StandardFile$ = ""
Pattern$ = "Bitmaps (*.bmp)|*.bmp|Portable Network Graphic (*.png)|*.png|Join Picture Expert Group (*.jpeg)|*.jpeg"
Pattern = 0
file$ = SaveFileRequester("Bild Speichern", Standardfile$, Pattern$, Pattern)
Endung$ = GetExtensionPart(file$)
If Endung$ = "bmp" Or Endung$ = "png" Or Endung$ = "jpeg"
If Endung$ = "bmp" : SaveImage(0, file$ ,#PB_ImagePlugin_BMP,10)
ElseIf Endung$ = "png" : SaveImage(0, file$ ,#PB_ImagePlugin_PNG,10)
ElseIf Endung$ = "jpeg" : SaveImage(0, file$ ,#PB_ImagePlugin_JPEG,10) : EndIf
End
Else
MessageRequester("ACHTUNG","Endung angeben") : Goto newsave
EndIf
Return
OKOK das Sprite hätte ich weglassen können nur leider habe ich eure Mails erst jetzt gelesen
sorry wegen der formatierung Iexpl. spinnt
und nein, ich weis nicht wo ich den code sost hinfrachten sollte
Schaut
meun prog ist fertig:
InitSprite()
InitKeyboard()
Global rr.w
Global gg.w
Global bb.w
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
UseJPEGImageEncoder()
UsePNGImageEncoder()
Gosub Voreinstellung
StandardFile$ = ""
Pattern$ = "Bitmaps (*.bmp)|*.bmp|Portable Network Graphic (*.png)|*.png|Join Picture Expert Group (*.jpeg)|*.jpeg|Targa (*.tga)|*.tga|Tiff (*.tiff)|*.tiff"
Pattern = 0
File$ = OpenFileRequester("Bitte Datei zum Laden auswählen", StandardFile$, Pattern$, Pattern)
LoadImage(0,File$)
UseImage(0)
ResizeImage(0, 800, 600)
OpenScreen(800,600,32,"V1")
CreateSprite(0,800,600)
For y=0 To 600
For x=0 To 800
UseImage(0)
StartDrawing(ImageOutput())
color = Point(x, y)
If mm$ = "Normal" : Gosub Normal
ElseIf mm$ = "SW" : Gosub SW
ElseIf mm$ = "Grau" : Gosub Grau
ElseIf mm$ = "Farbe" : Gosub Farbe
ElseIf mm$ = "Um" : Gosub Um : EndIf
Plot(x,y,color)
StopDrawing()
StartDrawing(SpriteOutput(0))
Plot(x,y,color)
StopDrawing()
Next
Next
Repeat
ClearScreen(0,0,0)
ExamineKeyboard()
DisplaySprite(0,0,0)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
Result = MessageRequester("Speicher","Wollen Sie das Bild Speichern?",#PB_MessageRequester_YesNo)
If Result = 6
Gosub Speichern
Else
End
EndIf
Voreinstellung:
OpenWindow(0,0,0,250,380,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Modus-einstellung") And CreateGadgetList(WindowID(0))
OptionGadget(0, 30, 20, 120, 20, "Normal")
OptionGadget(1, 30, 45, 120, 20, "Schwarz-Weiß")
OptionGadget(2, 30, 70, 120, 20, "Graustufen")
OptionGadget(3, 30, 95, 120, 20, "Farbe")
OptionGadget(4, 30, 120, 120, 20, "Farben umkehren")
SetGadgetState(0,1) ; wir setzen die zweite Option als aktiv
TextGadget (101, 30, 150, 250, 20, "Rot: "+"0"+"%")
ScrollBarGadget(102, 30, 170, 190, 20, 0, 109, 10)
SetGadgetState (102, 0)
TextGadget (111, 30, 210, 250, 20, "Grün: "+"0"+"%")
ScrollBarGadget(112, 30, 230, 190, 20, 0, 109, 10)
SetGadgetState (112, 0)
TextGadget (121, 30, 270, 250, 20, "Blau: "+"0"+"%")
ScrollBarGadget(122, 30, 290, 190, 20, 0, 109, 10)
SetGadgetState (122, 0)
ButtonGadget(999, 75, 330, 100, 30, "Übernehmen")
Repeat
If GetGadgetState(3) = 0
DisableGadget(101, 1)
DisableGadget(102, 1)
DisableGadget(111, 1)
DisableGadget(112, 1)
DisableGadget(121, 1)
DisableGadget(122, 1)
Else
DisableGadget(101, 0)
DisableGadget(102, 0)
DisableGadget(111, 0)
DisableGadget(112, 0)
DisableGadget(121, 0)
DisableGadget(122, 0)
EndIf
SetGadgetText(101, "Rot: "+Str(GetGadgetState(102))+"%")
SetGadgetText(111, "Grün:"+Str(GetGadgetState(112))+"%")
SetGadgetText(121, "Blau:"+Str(GetGadgetState(122))+"%")
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
End
EndIf
If GetGadgetState(0) = 1 : mm$ = "Normal"
ElseIf GetGadgetState(1) = 1 : mm$ = "SW"
ElseIf GetGadgetState(2) = 1 : mm$ = "Grau"
ElseIf GetGadgetState(3) = 1 : mm$ = "Farbe"
ElseIf GetGadgetState(4) = 1 : mm$ = "Um" : EndIf
rr = GetGadgetState(102)
gg = GetGadgetState(112)
bb = GetGadgetState(122)
Until EventGadgetID() = 999
CloseWindow(0)
Return
Normal:
Return
SW:
R = Red(color)
G = Green(color)
B = Blue(color)
colorsw = (R + G + B) / 3
If colorsw > 128
color = $FFFFFF
ElseIf colorsw =< 128
color = $000000
EndIf
Return
Grau:
R = Red(color)
G = Green(color)
B = Blue(color)
colorg = (R + G + B) / 3
color = RGB(colorg,colorg,colorg)
Return
Farbe:
R = Red(color)
G = Green(color)
B = Blue(color)
R = R * rr / 100
G = G * gg / 100
B = B * bb / 100
color = RGB(R,G,B)
Return
Um:
Rf.f = Red(color)
Gf.f = Green(color)
Bf.f = Blue(color)
R = Abs(Rf.f - 255)
G = Abs(Gf.f - 255)
B = Abs(Bf.f - 255)
color = RGB(R,G,B)
Return
Speichern:
newsave:
StandardFile$ = ""
Pattern$ = "Bitmaps (*.bmp)|*.bmp|Portable Network Graphic (*.png)|*.png|Join Picture Expert Group (*.jpeg)|*.jpeg"
Pattern = 0
file$ = SaveFileRequester("Bild Speichern", Standardfile$, Pattern$, Pattern)
Endung$ = GetExtensionPart(file$)
If Endung$ = "bmp" Or Endung$ = "png" Or Endung$ = "jpeg"
If Endung$ = "bmp" : SaveImage(0, file$ ,#PB_ImagePlugin_BMP,10)
ElseIf Endung$ = "png" : SaveImage(0, file$ ,#PB_ImagePlugin_PNG,10)
ElseIf Endung$ = "jpeg" : SaveImage(0, file$ ,#PB_ImagePlugin_JPEG,10) : EndIf
End
Else
MessageRequester("ACHTUNG","Endung angeben") : Goto newsave
EndIf
Return
OKOK das Sprite hätte ich weglassen können nur leider habe ich eure Mails erst jetzt gelesen
sorry wegen der formatierung Iexpl. spinnt
und nein, ich weis nicht wo ich den code sost hinfrachten sollte
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
die hat aber Urlaub.
MfG : Unix
Urgg....
Der Text ist aber nciht sehr leserlich.
Vielleicht solltest du einiges doch mit Prozeduren machen.
So ist das nicht so leicht zu lesen. Das Viele Gosub stört doch ziemlich.
Warnung: Nicht starten, es stürzt ab.
@Unix: du hast die Zeichenschleife von 0-800 gemacht, das 800 ist aber schon über den Rand und führt zu einem Fehler.

Der Text ist aber nciht sehr leserlich.
Vielleicht solltest du einiges doch mit Prozeduren machen.
So ist das nicht so leicht zu lesen. Das Viele Gosub stört doch ziemlich.

Warnung: Nicht starten, es stürzt ab.
@Unix: du hast die Zeichenschleife von 0-800 gemacht, das 800 ist aber schon über den Rand und führt zu einem Fehler.