Здравствуйте, 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);