Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Проблемы с Graphics.TranslateTransform


Автор: VisualProgrammerNET 16.4.2006, 15:15
 smile 
А чё TranslateTransform() так по-левому работает? На форме есть два объекта. Круг и палка. Когда скроллишь форму, объекты не только ездят по форме, но и приближаются-удаляются относительно друг друга!  smile Это так и надо?   

Автор: mr.DUDA 16.4.2006, 16:38
Цитата
А чё TranslateTransform() так по-левому работает? На форме есть два объекта. Круг и палка. Когда скроллишь форму, объекты не только ездят по форме, но и приближаются-удаляются относительно друг друга!   Это так и надо?  

1) исходный код отрисовки фигур - в студию
2) вынес в отдельную тему 

Автор: VisualProgrammerNET 17.4.2006, 10:37
Ммм... в общем, ребят, вот вам исходники. Тут на форум очень долго выкладывать... smile 

Обратите внимание, что красная мигающая зона (куда кружок не может пройти через стену, ещё не доработано) относительно стены не движется. А вот кружок при скроллинге летает вдоль всей формы...

Эээ... а где кнопочка аттача?  smile  

Качаем тут http://up.li.ru/?id=172099;TheLife.rar 

Автор: mr.DUDA 17.4.2006, 11:22
Цитата(VisualProgrammerNET @  17.4.2006,  09:37 Найти цитируемый пост)
Эээ... а где кнопочка аттача?   

На краткой форме ответа её нет, поэтому нужно нажать баттон "Ответить" 

Автор: VisualProgrammerNET 17.4.2006, 21:06
Тут макс размер аттача 120 К. А у меня рар весит 400... скачайте, плиз. Там всё равно оно же. А в чём проблема я никак не могу понять...  smile 
 

Автор: -ser- 18.4.2006, 07:07
поставь отрицательные значения в TranslateTransform( -, - ).
там все стардартно и просто, никаких проблем не может быть.

со своим гвинейским адресом что-то не смог скачать, подозреваю город-герой Мiнск мае теж проблеми.  

Автор: ivashkanet 18.4.2006, 07:48
 smile 
Цитата(-ser- @  18.4.2006,  07:07 Найти цитируемый пост)
город-герой Мiнск мае теж проблеми

Ага, там нужны только русские IP. 

Автор: VisualProgrammerNET 18.4.2006, 12:50
Урезал всё. Качаем аттач  smile 
 

Автор: VisualProgrammerNET 18.4.2006, 22:14
Призываю ещё раз обратить внимание на проблему  smile  Так и не додумался, почему одни объекты ведут себя нормально, а другие нет...  

Автор: VisualProgrammerNET 1.5.2006, 21:35
Создал (как мне кажется) аналог TranslateTransform. Простенькую программку с прямоугольником. На форму кидаем только таймер и ставим AutoScrollMinSize побольше (2000; 2000 например). Размер формы любой. Интервал таймера - 20.

Пишем кодъ:
Код

namespace TestWork1
{
    public partial class Form1 : Form
    {        
        int _x1 = 300, _x2 = 700, _y1 = 200, _y2 = 1000;
        int X1
        {
            get { return _x1 + this.AutoScrollPosition.X; }
        }
        int X2
        {
            get { return _x2 + this.AutoScrollPosition.X; }
        }
        int Y1
        {
            get { return _y1 + this.AutoScrollPosition.Y; }
        }
        int Y2
        {
            get { return _x2 + this.AutoScrollPosition.Y; }
        }
        
        public Form1()
        {
            InitializeComponent();            
        }        

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            e.Graphics.DrawRectangle(new Pen(Color.Red, 10), X1, Y1, X2, Y2);
        }        

        private void timer1_Tick(object sender, EventArgs e)
        {
            this.Invalidate();
        }
    }
}

Теперь разверните окно на полную, попробуйте покрутить скроллбары и посмотрите, как прямоугольник растягивается и сжимается. Он дурак? Почему он так делает? Через TranslateTransform() точно такая же штука... в чём беда?  smile   

Автор: Quadr0 1.5.2006, 22:19
...

Автор: VisualProgrammerNET 1.5.2006, 23:14
Ну хорошо, сделайте большую форму и прямоугольник поменьше.  smile  Полюбому, когда скроллишь форму, он изменяется в размерах. Неужели это только у меня такое? Не может быть  smile  

Квадро, приведи свой код, плиз. И скажи, какие свойства где выставлял 

Автор: Quadr0 2.5.2006, 11:46
...

Автор: VisualProgrammerNET 2.5.2006, 13:42
Ты видать говоришь про то, что в аттаче. А я о посте 
Цитата(VisualProgrammerNET @  1.5.2006,  21:35 Найти цитируемый пост)
Создал (как мне кажется) аналог TranslateTransform. Простенькую программку с прямоугольником. На форму кидаем только таймер и ставим AutoScrollMinSize побольше (2000; 2000 например). Размер формы любой. Интервал таймера - 20.


 smile 

Это новая программка, простая. Сделай вот новый проект, и создай форму, как описано выше. Засунь код, который из этого поста. Будет жирный красный прямоугольник. 
 

Автор: mr.DUDA 4.5.2006, 11:51
Такой пример ответит на твой вопрос ?
Код

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.TranslateTransform(this.AutoScrollPosition.X, this.AutoScrollPosition.Y);
            e.Graphics.FillRectangle(Brushes.Red, new Rectangle(100, 100, 400, 200));
        }

        private void Form1_Scroll(object sender, ScrollEventArgs e)
        {
            this.Refresh();
        }
    }
}
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)