IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Sparklezz
Člen
Avatar
Sparklezz:10.7.2015 14:34

Když mám vlastně PictureBox1 o nějaké velikosti (např. 800x400) a v něm obrázek 1920x1080. Dá se nejak udělat to, že najedu na ten PictureBox1 a tahem myší budu v tom boxu posouvat ten obrázek? Děkuji

 
Odpovědět
10.7.2015 14:34
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Sparklezz
Jan Vargovský:10.7.2015 18:07

Ano dá.

 
Nahoru Odpovědět
10.7.2015 18:07
Avatar
Sparklezz
Člen
Avatar
Sparklezz:10.7.2015 18:31

A mohu se zeptat jak? díky

 
Nahoru Odpovědět
10.7.2015 18:31
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Sparklezz
Jan Vargovský:10.7.2015 18:44

Chceš jen nějaký nápad co k tomu budeš asi potřebovat nebo i kód?

 
Nahoru Odpovědět
10.7.2015 18:44
Avatar
Sparklezz
Člen
Avatar
Sparklezz:10.7.2015 18:47

Poprosil bych asi ze vším všudy :D jestli mlžeš, děkuji

 
Nahoru Odpovědět
10.7.2015 18:47
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Sparklezz
Jan Vargovský:10.7.2015 20:14
public partial class Form1 : Form
{
    private Image image;
    private Point point;
    private Point pointOnClickDown;

    /// <summary>
    /// indicates if image is rendered in realtime during shift
    /// </summary>
    bool realTimeShift = true;
    bool isMousePressed;

    public Form1()
    {
        InitializeComponent();

        // panel which is used to draw image
        Panel p = new Panel()
        {
            Width = 300,
            Height = 300
        };

        // see http://stackoverflow.com/a/15815254
        // prevents flickering
        // its done by this way, because its access modification is protected
        typeof(Panel).InvokeMember("DoubleBuffered",
        BindingFlags.SetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
        null, p, new object[] { true });
        this.Controls.Add(p);

        image = Image.FromFile("Untitled.png");
        point = Point.Empty;

        // draw image
        p.Paint += (o, e) =>
        {
            Graphics g = e.Graphics;
            //g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.AssumeLinear;
            g.DrawImage(image, point);
        };

        p.MouseDown += (o, e) =>
        {
            // store starting position
            pointOnClickDown = e.Location;
            isMousePressed = true;
        };

        p.MouseUp += (o, e) =>
        {
            if (!realTimeShift)
            {
                // calculates difference between two points
                Point shift = new Point(e.Location.X - pointOnClickDown.X, e.Location.Y - pointOnClickDown.Y);
                // refresh position of image - shift it with some direction
                point.Offset(shift);
                // force refresh on panel
                p.Invalidate();
            }
            isMousePressed = false;
        };

        p.MouseMove += (o, e) =>
        {
            if (realTimeShift && isMousePressed)
            {
                // calculates difference between two points
                Point shift = new Point(e.Location.X - pointOnClickDown.X, e.Location.Y - pointOnClickDown.Y);
                // refresh position of image - shift it with some direction
                point.Offset(shift);
                // store starting position
                pointOnClickDown = e.Location;
                // force refresh on panel
                p.Invalidate();
            }
        };
    }
}
Editováno 10.7.2015 20:15
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
10.7.2015 20:14
Avatar
Sparklezz
Člen
Avatar
Sparklezz:10.7.2015 20:29

A do jaké složky to mám vrznout?

 
Nahoru Odpovědět
10.7.2015 20:29
Avatar
Sparklezz
Člen
Avatar
Sparklezz:10.7.2015 20:30

A delam to ve VB.net ne v C

 
Nahoru Odpovědět
10.7.2015 20:30
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Sparklezz
Ondřej Štorc:10.7.2015 20:58

Zjevně nevíš nic o práci s WinFormi, zkus se kouknout na zdejší návody, pak by ti to mělo být jasný kam to dát :) http://www.itnetwork.cz/…indows-forms

Nahoru Odpovědět
10.7.2015 20:58
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Sparklezz
Jan Vargovský:10.7.2015 21:03

Ah, nevšiml sem si toho názvu... Si to dej do nějakého konverteru nebo popros Michal Žůrek - misaz, aby ti to přepsal :P

 
Nahoru Odpovědět
10.7.2015 21:03
Avatar
Odpovídá na Jan Vargovský
Michal Žůrek - misaz:10.7.2015 21:05

konvertor (dneska výjimečně funguje, to se mi už dlouho nestalo):

Public Partial Class Form1
        Inherits Form
        Private image As Image
        Private point As Point
        Private pointOnClickDown As Point

        ''' <summary>
        ''' indicates if image is rendered in realtime during shift
        ''' </summary>
        Private realTimeShift As Boolean = True
        Private isMousePressed As Boolean

        Public Sub New()
                InitializeComponent()

                ' panel which is used to draw image
                Dim p As New Panel() With { _
                        Key .Width = 300, _
                        Key .Height = 300 _
                }

                ' see http://stackoverflow.com/a/15815254
                ' prevents flickering
                ' its done by this way, because its access modification is protected
                GetType(Panel).InvokeMember("DoubleBuffered", BindingFlags.SetProperty Or BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, p, New Object() {True})
                Me.Controls.Add(p)

                image = Image.FromFile("Untitled.png")
                point = Point.Empty

                ' draw image
                p.Paint += Function(o, e)
                Dim g As Graphics = e.Graphics
                'g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.AssumeLinear;
                g.DrawImage(image, point)

End Function

                p.MouseDown += Function(o, e)
                ' store starting position
                pointOnClickDown = e.Location
                isMousePressed = True

End Function

                p.MouseUp += Function(o, e)
                If Not realTimeShift Then
                        ' calculates difference between two points
                        Dim shift As New Point(e.Location.X - pointOnClickDown.X, e.Location.Y - pointOnClickDown.Y)
                        ' refresh position of image - shift it with some direction
                        point.Offset(shift)
                        ' force refresh on panel
                        p.Invalidate()
                End If
                isMousePressed = False

End Function

                p.MouseMove += Function(o, e)
                If realTimeShift AndAlso isMousePressed Then
                        ' calculates difference between two points
                        Dim shift As New Point(e.Location.X - pointOnClickDown.X, e.Location.Y - pointOnClickDown.Y)
                        ' refresh position of image - shift it with some direction
                        point.Offset(shift)
                        ' store starting position
                        pointOnClickDown = e.Location
                        ' force refresh on panel
                        p.Invalidate()
                End If

End Function
        End Sub
End Class
 
Nahoru Odpovědět
10.7.2015 21:05
Avatar
Sparklezz
Člen
Avatar
Sparklezz:10.7.2015 21:34

A do čeho to mám dát prosím vás? do toho pictureboxu?

 
Nahoru Odpovědět
10.7.2015 21:34
Avatar
Sparklezz
Člen
Avatar
Sparklezz:10.7.2015 21:37

a vyskakuje mi tam chyba.... u např. p.MouseUP , p.Invalidate (To je písmeno "p" je označeně špatně)

 
Nahoru Odpovědět
10.7.2015 21:37
Avatar
Odpovídá na Sparklezz
Michal Žůrek - misaz:10.7.2015 21:38

začni tím, že se naučíš základy jazyka.

 
Nahoru Odpovědět
10.7.2015 21:38
Avatar
Sparklezz
Člen
Avatar
Sparklezz:10.7.2015 21:42

Stačilo by jen kdybyste mě jen navedli... Tohle mi chybí jako poslední v programu. Já sem grafik ne koder, děkuji za vše

 
Nahoru Odpovědět
10.7.2015 21:42
Avatar
Odpovídá na Sparklezz
Michal Žůrek - misaz:10.7.2015 22:02

to tě neomlouvá.

 
Nahoru Odpovědět
10.7.2015 22:02
Avatar
Sparklezz
Člen
Avatar
Sparklezz:10.7.2015 22:27

To je sice pravda, ale když slušně prosím.... ale mně je to řiť

 
Nahoru Odpovědět
10.7.2015 22:27
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Sparklezz
David Hartinger:10.7.2015 22:32

Uvědom si, že jsi napsal na fórum, kde si radíme, neděláme tady práci za druhé. Kluci ti to celé napsali a ty si to ani nedokážeš vložit do projektu a ještě si stěžuješ? Jestli si chceš nechat napsat aplikaci, tak si zadej zakázku - http://www.itnetwork.cz/…-v-it/submit a zaplať si za to. Jestli chceš pomoct, tak ti pomůžeme rádi, ale budeš se muset snažit. A nás nezajímá že jsi grafik, to je jako by mi zedník zadarmo něco opravil protože sem programátor? Fakt se zamysli nad tím co pro tebe tady udělali a co jsi pro ně udělal ty.

Nahoru Odpovědět
10.7.2015 22:32
New kid back on the block with a R.I.P
Avatar
Michal Žůrek - misaz:10.7.2015 22:40

Dostal jsi kompletní řešení ve dvou programovacích jazycích, třeba nějaké "děkuju"?

 
Nahoru Odpovědět
10.7.2015 22:40
Avatar
Sparklezz
Člen
Avatar
Sparklezz:11.7.2015 0:29

Dobře uznávám svoji chybu a omlouvám se. Mohu se tedy zeptat, jak to udělat skrz VScrollBar a HScrollBar? Jen prosím říct jak, já si tedy zbytek udělám. Děkuju za vše

 
Nahoru Odpovědět
11.7.2015 0:29
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Sparklezz
Jan Vargovský:15.7.2015 20:00

Kdybys klikl na odpovědět, tak by si toho třeba někdo všiml. Pořád to nemáš hotové?

 
Nahoru Odpovědět
15.7.2015 20:00
Avatar
David Mlčoch
Tvůrce
Avatar
David Mlčoch:2.8.2015 20:11

nn nemám to hotové, proste to nejde

 
Nahoru Odpovědět
2.8.2015 20:11
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 22 zpráv z 22.