Imageviewer (Bildbetrachter) Komplett    Zurück


Dieses Programm arbeitet mit Menuesteuerung . Es ist ein kleiner Bildbetrachter. Es kann Bilddateien öffnen, laden, speichern.

Außerdem kann es ein Zufallsbild mit dem Befehl Draw erzeugen

So schaut das Programm in der Entwurfsansicht aus. Der Timer wird nur für das Zufallsbild gebraucht. Die DrawingArea wird in das Scrollviewfeld hinein platziert.




So schaut der Code aus:

' Gambas class file



PUBLIC SUB Form_Resize()

svwImage.Move(0, 0, ME.ClientW, ME.ClientH)

END



PUBLIC SUB mnuOpen_Click()

DIM hImage AS Image

Dialog.Path = "/usr/share/wallpapers"

IF NOT Exist(Dialog.Path) THEN

Dialog.Path = Application.Home

ENDIF

Dialog.Filter = [ "Picture files (*.jpg; *.jpeg; *.png; *.bmp)", "All files (*.*)" ]

IF Dialog.OpenFile() THEN RETURN

hImage = NEW Image

hImage.Load(Dialog.Path)

dwgImage.Resize(hImage.Width, hImage.Height)

dwgImage.Clear()

Draw.Begin(dwgImage)

Draw.Fillcolor = Color.Gray

Draw.FillStyle = Fill.Solid

Draw.Rect(0, 0, hImage.Width, hImage.Height)

Draw.Image(hImage, 0, 0)

Draw.End

dwgImage.Visible = TRUE

CATCH

Message.Warning(Error.Text & " !")

END



PUBLIC SUB mnuQuit_Click()

ME.Close

END



'PUBLIC SUB dwgImage_Draw()

' IF hPict THEN Draw.Picture(0, 0, hPict)

'END



PUBLIC SUB mnuStart_Click()

timDraw.Enabled = NOT timDraw.Enabled

IF timDraw.Enabled THEN

mnuStart.Text = "&Stop"

ELSE

mnuStart.Text = "&Start"

ENDIF

END



PUBLIC SUB timDraw_Timer()

DIM iInd AS Integer

DIM X1 AS Integer

DIM Y1 AS Integer

DIM X2 AS Integer

DIM Y2 AS Integer

DIM W AS Integer

DIM H AS Integer

DIM eTime AS Float

Draw.Begin(dwgImage)

FOR iInd = 1 TO 16

Draw.FillColor = Int(Rnd(&HFFFFFF&))

'Draw.ForeColor = Int(Rnd(&HFFFFFF&))

Draw.FillStyle = Fill.Solid

X1 = Int(Rnd(dwgImage.Width))

Y1 = Int(Rnd(dwgImage.Height))

W = Int(Rnd(8, 16))

H = Int(Rnd(8, 16))

'REPEAT

' X2 = Int(Rnd(dwgImage.Width))

'UNTIL X2 <> X1

'REPEAT

' Y2 = Int(Rnd(dwgImage.Height))

'UNTIL Y2 <> Y1

'IF (X1 > X2) THEN SWAP X1, X2

'IF (Y1 > Y2) THEN SWAP Y1, Y2

'Draw.Ellipse(X1, Y1, X2 - X1 + 1, Y2 - Y1 + 1)

Draw.Rect(X1 - W, Y1 - H, W + W, H + H)

'Draw.Polyline([X1 + W / 2, Y1, X1 + W - 1, Y1 + H - 1, X1, Y1 + H - 1])

'Draw.Point(X1, Y1)

NEXT

Draw.End

'dwgImage.Refresh

END



PUBLIC SUB mnuAbout_Click()

Message.Info("A simple image viewer example by\nBenoit Minisini (gambas@users.sourceforge.net)")

END



PUBLIC SUB timUpdate_Timer()

dwgImage.Refresh

END