Re[2]: изменение системы координат
От: Аноним  
Дата: 28.07.04 10:02
Оценка:
Здравствуйте, vitz, Вы писали:

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


R>>Подскажите как сделать так чтобы у(ордината) в системе координат "смотрела" на верх

V>Если для системы координат окна, то в OnPaint делаешь примерно вот так:
V>
V>protected override void OnPaint(PaintEventArgs e)
V>        {
V>            base.OnPaint (e);
V>            Matrix m = new Matrix();
V>            m.Translate(0,this.Size.Height);
V>            m.Scale(1,-1);
V>            e.Graphics.Transform = m;
V>            // Рисуй на здоровье.
V>        }
V>


Согласен, хотя по-моему в данном случае проще вызывать непосредственно Graphics.TranslateTransform() и Graphics.ScaleTransform() без предварительного создания временного Matrix'а и последующего его присваивания свойству Graphics.Transform.

А еще лучше сразу создать Matrix с инвертирующим преобразованием и присвоить его свойству Transform в одном вызове:

base.OnPaint (e);
e.Graphics.Transform = new Matrix(/* ... */);
// Рисуй (не менее) на здоровье.


Благо для этого у Matrix'а есть масса разнообразных конструкторов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.