Avatar billede ddjppol Nybegynder
22. august 2007 - 10:22 Der er 8 kommentarer og
1 løsning

billeder er køre i ring.

Hvis nu jeg har en picturebox der er f.eks 50x50

Hvordan laver man sådan at der f.eks er et billede der er 50x200 der så køre der inde... nogle der forstår det?
Avatar billede nielle Nybegynder
22. august 2007 - 19:03 #1
Sådan?

        Bitmap picture = new Bitmap(@"C:\Source.Net20\e792831\e792831.JPG");

        Timer pictureScroller = new Timer();
        int pictureOffset = 0;       

        private void Form1_Load(object sender, EventArgs e)
        {
            this.pictureBox1.Image = new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height);

            pictureScroller.Interval = 100;
            pictureScroller.Tick += new EventHandler(pictureScroller_Tick);
            pictureScroller.Start();
        }

        void pictureScroller_Tick(object sender, EventArgs e)
        {
            pictureOffset++;
            pictureOffset %= picture.Width;

            Graphics g = Graphics.FromImage(this.pictureBox1.Image);
            g.DrawImage(picture, pictureOffset, 0);
            g.DrawImage(picture, pictureOffset - picture.Width, 0);

            this.pictureBox1.Invalidate();
        }
Avatar billede tuxic Nybegynder
22. august 2007 - 22:57 #2
Blot et par kommentarer: Graphics objektet bør nok disposes. Jeg vil _tro_ at man bør Invoke kaldet til Invalidate, da det kører på en anden tråd end hovedtråden.
Avatar billede ddjppol Nybegynder
23. august 2007 - 08:51 #3
Ja, jeg skal så lige prøve at lave det om til vb.net
Avatar billede ddjppol Nybegynder
23. august 2007 - 10:14 #4
aigh?

Er der en der kan lave det i vb ?
Avatar billede nielle Nybegynder
23. august 2007 - 14:36 #5
Direkte oversat:

    Private picture As Bitmap = New Bitmap("C:\\Source.Net20\\e792831\\e792831.JPG")

    Private pictureScroller As System.Windows.Forms.Timer = New System.Windows.Forms.Timer()
    Private pictureOffset As Integer = 0

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.PictureBox1.Image = New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height)

        pictureScroller.Interval = 100
        AddHandler pictureScroller.Tick, AddressOf pictureScroller_Tick
        pictureScroller.Start()
    End Sub

    Sub pictureScroller_Tick(ByVal sender As Object, ByVal e As EventArgs)
        pictureOffset += 1
        pictureOffset = pictureOffset Mod picture.Width

        Dim g As Graphics = Graphics.FromImage(Me.PictureBox1.Image)
        g.DrawImage(picture, pictureOffset, 0)
        g.DrawImage(picture, pictureOffset - picture.Width, 0)

        Me.PictureBox1.Invalidate()
    End Sub
Avatar billede ddjppol Nybegynder
23. august 2007 - 14:44 #6
fantastisk... men det skal scrolle op og ikke til siden... jeg har prøvet at lave width om til height, men det fungere ikke...
Avatar billede ddjppol Nybegynder
23. august 2007 - 14:46 #7
har fikset det... er der nogle der vil have point?
Avatar billede nielle Nybegynder
23. august 2007 - 15:29 #8
Svar :^)

Hvordan kom din kode til at se ud?
Avatar billede ddjppol Nybegynder
23. august 2007 - 15:56 #9
Sådan her ca.

---
Public Class Form1



    Private picture1 As Bitmap = New Bitmap("C:\Documents and Settings\david.dollas\Skrivebord\pic.bmp")

    Private picture2 As Bitmap = New Bitmap("C:\Documents and Settings\david.dollas\Skrivebord\pic.bmp")



    Private pictureScroller As System.Windows.Forms.Timer = New System.Windows.Forms.Timer()

    Private pictureOffset As Integer = 0

    Private a As Integer = 0

    Private test As String = ("")

    Private stopper











    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Randomize()

        Me.PictureBox1.Image = New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height)

        Me.PictureBox2.Image = New Bitmap(Me.PictureBox2.Width, Me.PictureBox2.Height)



        pictureScroller.Interval = 1

        AddHandler pictureScroller.Tick, AddressOf pictureScroller_Tick



    End Sub



    Sub pictureScroller_Tick(ByVal sender As Object, ByVal e As EventArgs)

        If stopper = 0 Then stopper = 60 * CInt(Int((3 * Rnd()) + 1))



        If a < stopper Then

            pictureOffset += 5



        Else



            pictureScroller.Stop()

            stopper = 0

        End If

        a = a + 1



        Label1.Text = pictureOffset

        Label1.Update()

        pictureOffset = pictureOffset Mod picture1.Height



        Dim g1 As Graphics = Graphics.FromImage(Me.PictureBox1.Image)

        g1.DrawImage(picture1, 0, pictureOffset)

        g1.DrawImage(picture1, 0, pictureOffset - picture1.Height)



        pictureOffset = pictureOffset Mod picture2.Height



        Dim g2 As Graphics = Graphics.FromImage(Me.PictureBox2.Image)

        g2.DrawImage(picture2, 0, pictureOffset)

        g2.DrawImage(picture2, 0, pictureOffset - (picture2.Height + 60))



        Me.PictureBox1.Invalidate()

        Me.PictureBox2.Invalidate()

    End Sub



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        a = 0

        pictureScroller.Start()

    End Sub

End Class
---
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I dag 06:10 Excel åbner fil i kæmpe format Af Aske i Excel
I går 22:00 Datafordeler Af Lsk i PHP
I går 12:37 Summere beløb pr. dato Af TTA i Excel
31/1022:44 Tilslutte chassic fans Af viking69 i PC
31/1020:28 LED lysstofrør Af ErikHg i Fri debat