MaxGui - Vergrößertes Bild mit Slidern scrollen?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

M0rgenstern

Betreff: MaxGui - Vergrößertes Bild mit Slidern scrollen?

BeitragMi, Apr 11, 2012 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute.
Ich habe gerade wieder ein kleines Problem mit der MaxGui.
Im Voraus: Ich habe mich an diesem Tutorial (der Teil ganz unten) orientiert: http://maxgui.simongeisseler.ch/T13-Sliders.html
Im Unterschied zu dem Tutorial: Ich will nicht ein Bild, das zu groß ist scrollen, sondern ein Bild, das mit SetScale vergrößert und gemalt wurde, scrollen.

Meine Funktion dazu sieht so aus:
BlitzMax: [AUSKLAPPEN]
Function DrawEditTile()
If(tetChosenTile <> Null) Then
SetGadgetShape(tgEditCanvas, tgEditCanvas.xpos, tgEditCanvas.ypos, Min(tetChosenTile.timgImg.width * iEditZoom, 320), Min(tetChosenTile.timgImg.height * iEditZoom, 320))
SetGraphics(CanvasGraphics(tgEditCanvas))
SetViewport(0, 0, GadgetWidth(tgEditCanvas), GadgetHeight(tgEditCanvas))
SetClsColor(10, 10, 10)
Cls
SetScale(iEditZoom, iEditZoom)
DrawImage(tetChosenTile.timgImg, 0, 0)
SetScale(1.0, 1.0)
Local piX:TPixmap = GrabPixmap(iEditScrollHorizontal, iEditScrollVertical, Min(tetChosenTile.timgImg.width * iEditZoom, 320), Min(tetChosenTile.timgImg.height * iEditZoom, 320))
Cls
DrawPixmap(pix, 0, 0)
Flip
EndIf
End Function


Ein großer Unterschied zum Tutorial ist eigentlich nicht, außer SetGadgetShape (um das Canvas anzupassen), SetViewport und halt dass ich mit SetScale arbeite. Und ich benutze halt "Min", weil er sonst das Bild unskaliert nicht zeichnet.
iEditscrollHorizontal/Vertical gibt halt den Wert der Slider (zum Scrollen) an.

Das Problem ist jetzt: Er verschiebt das Bild zwar, aber anstatt den vorher nicht sichtbaren Teil zu zeichnen, zeichnet er einen schwarzen Rand.
Kann mir bitte jemand helfen? Ich muss ehrlich sagen, dass ich ratlos bin, weil ich keinen großen Unterschied zu dem Tutorial sehe.

Lg, M0rgenstern
 

jsp

BeitragMi, Apr 11, 2012 22:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Verstehe das Programm nicht wirklich.
Wenn du nur einen Teil des Bildes anzeigen willst könnte DrawImageRect helfen.
DrawImageRect( image:TImage,x#,y#,w#,h#,frame=0 )

Mit den Slidern würde man dann nur de Anfang verschieben und ist eigentlich fertig.

Oder man nimmt ein ScrollPanel und packt dort ein größeres Canvas oder Panel hinein.
Logic Gui Professional a Gui Designer for MaxGui

Lobby

BeitragMi, Apr 11, 2012 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum grabst Du denn das gezeichnete Bild, um es anschließend als Pixmap erneut zu zeichnen? Das ist langsam und scheint hier nicht sonderlich sinnvoll zu sein. Zeichne doch einfach das Bild bereits um das Gescrolte versetzt, und es sollte passen.
Die schwarzen Balken rühren daher, dass Du das Bild außerhalb des Viewports 'abfotografierst', wo es natürlich nicht gezeichnet wurde. In dem Tutorial wird es vermutlich funktionieren, weil DrawPixmap sich nicht um den Viewport schert.

Als Zeichenbefehle würden hier wohl reichen:
BlitzMax: [AUSKLAPPEN]
SetGraphics(CanvasGraphics(tgEditCanvas))
SetViewport(0, 0, GadgetWidth(tgEditCanvas), GadgetHeight(tgEditCanvas))
SetClsColor(10, 10, 10)
Cls
SetScale(iEditZoom, iEditZoom)
DrawImage(tetChosenTile.timgImg, -iEditScrollHorizontal, -iEditScrollVertical)
Flip
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux
 

jsp

BeitragMi, Apr 11, 2012 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Warum grabst Du denn das gezeichnete Bild, um es anschließend als Pixmap erneut zu zeichnen?

Habe ich auch nicht verstanden, aber habe gerade mal in das Tutorial geschaut und da ist es so angegeben. ^^
Logic Gui Professional a Gui Designer for MaxGui

M0rgenstern

BeitragMi, Apr 11, 2012 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey ihr.
Vielen Dank.
Ich fand das auch umständlich was in dem Tutorial beschrieben wurde. Aber dadurch war ich ziemlich verwirrt und habe das offensichtliche nicht gesehen.
Vielen Dank.
Das funktioniert jetzt.

Lg, M0rgenstern

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group