Скроллинг
От: jollyck  
Дата: 28.03.06 11:03
Оценка:
Помогите с решением:

Есть Элемент panel в которой размещается элемент PictureBox (в котором находится картинка) при определенных условиях (ZoomIn) размер PictureBox становится больше чем у panel. Включается автоскроллинг.
Посему вопрос. Как лучше всего организовать такую фичу: юзер "хватает" картинку (MouseDown) и далее при перемещении мышки (MouseMove) картинка начинает перемещаться в соответствии с курсором.
В общем это аналог инструмента Hand Tool в Фотошопе.

Лучше если исходничком поможете, но и советы принимаются .
Re: Скроллинг
От: codenet Россия  
Дата: 28.03.06 22:24
Оценка:
Здравствуйте, jollyck, Вы писали:

J>Помогите с решением:


J>Есть Элемент panel в которой размещается элемент PictureBox (в котором находится картинка) при определенных условиях (ZoomIn) размер PictureBox становится больше чем у panel. Включается автоскроллинг.

J>Посему вопрос. Как лучше всего организовать такую фичу: юзер "хватает" картинку (MouseDown) и далее при перемещении мышки (MouseMove) картинка начинает перемещаться в соответствии с курсором.
J>В общем это аналог инструмента Hand Tool в Фотошопе.

J>Лучше если исходничком поможете, но и советы принимаются .



=)ну вот примерно ,только тут таскаю обьект панель по такому же принципу можно и картинку )

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication35
{
    public partial class Form1 : Form
    {
        bool isdrag;
        int px, py;
        public Form1()
        {
            InitializeComponent();
        }
         private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            px = e.X;
            py = e.Y;
            isdrag = true;
        }

        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            if (isdrag)
            {
                panel1.Left += e.X  - px;
                panel1.Top += e.Y  - py;
            }
        }

        private void panel1_MouseUp(object sender, MouseEventArgs e)
        {
            isdrag = false;
        }
    }
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Скроллинг
От: codenet Россия  
Дата: 29.03.06 00:07
Оценка:
Здравствуйте, codenet, Вы писали:

C>Здравствуйте, jollyck, Вы писали:


J>>Помогите с решением:


J>>Есть Элемент panel в которой размещается элемент PictureBox (в котором находится картинка) при определенных условиях (ZoomIn) размер PictureBox становится больше чем у panel. Включается автоскроллинг.

J>>Посему вопрос. Как лучше всего организовать такую фичу: юзер "хватает" картинку (MouseDown) и далее при перемещении мышки (MouseMove) картинка начинает перемещаться в соответствии с курсором.
J>>В общем это аналог инструмента Hand Tool в Фотошопе.

J>>Лучше если исходничком поможете, но и советы принимаются .


ой сори я и вопрос не доконца понял...
нупринцип такойже таскать image внутри панели, а панель скролится будет
просто проверки при перетаскивании делать наподобие
if(pictureBox1.Left < 0 || px > e.X)
и
isdrag = false;
когда курсор не над картинкой
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
RE: Скроллинг
От: Аноним  
Дата: 28.03.06 20:56
Оценка:
Помогите с решением:

Есть Элемент panel в которой размещается элемент PictureBox (в котором находится картинка) при определенных условиях (ZoomIn) размер PictureBox становится больше чем у panel. Включается автоскроллинг.
Посему вопрос. Как лучше всего организовать такую фичу: юзер "хватает" картинку (MouseDown) и далее при перемещении мышки (MouseMove) картинка начинает перемещаться в соответствии с курсором.
В общем это аналог инструмента Hand Tool в Фотошопе.

Лучше если исходничком поможете, но и советы принимаются .
http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c57c.aspx#q493q
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/scrollbars/scrollbarreference/scrollbarfunctions/scrollwindow.asp

Соответсвенно, перегружай MouseMove, сохраняй там положение мыши и, если зажата кнопка, то сдвигай видимую область панели по оффсетам (текущее положение мыши минус предыдущее).



данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.