Re[6]: изменение системы координат
От: SATo Россия  
Дата: 02.08.04 12:58
Оценка:
Здравствуйте, Repdiablo, Вы писали:

R>Делаю так:


R>Matrix m = new Matrix();
R>m.Translate(0,this.Size.Height);
R>m.Scale(1,-1);
R>e.Graphics.Transform = m;

R>рисую график

Более правильно:
m.Translate(0,this.ClientRectangle.Height);

(но к данному вопросу отношения не имеет)

R>В другой функции делаю так:

R>Point[] strPointArray;
R>strPointArray = new Point[6];
R>for (int j = 0 ; j <=5; j++) 
R>{
R> strPointArray[j].X = j;
R> strPointArray[j].Y = -10; // <-- (1) Измени знак!!!
R>}
R>Matrix m = new Matrix(); // <-- (2) без параметров!!!
R>m.TransformPoints(strPointArray);
R>e.Graphics.ResetTransform().
R>e.Graphics.DrawString("1", drawFont, drawBrush, strPointArray[0].X, strPointArray[0].Y);

R>1 — не вижу на экране
R>Что делаю не так?

1. Я так понял, надо рисовать в сисеме координат, где Y=0 соответствует нижней границе окна и растет вверх?
Тогда любая отрицательная координата будет вне экрана.

2. Создается единичная матрица, не выполняющая реально никакого преобразования.
Нужно использовать конструктор с параметрами, например

Matrix m = new Matrix(1, 0, 0, -1, 0, ClientRectangle.Height);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.