ВУЗ:
Составители:
Рубрика:
162
InitializeComponent();
this.SetStyle(ControlStyles.ResizeRedraw, true);
this.BackColor = Color.White;
}
private void Form1_Paint(object sender,
PaintEventArgs e) {
Graphics gfx = e.Graphics;
Size s = this.ClientSize;
//перенос в середину и зеркально по Y
gfx.Transform = new Matrix(1, 0, 0, -1,
s.Width / 2, s.Height / 2);
//масштабирование по X и Y
gfx.ScaleTransform((float)(s.Width/15.0),
(float) (s.Height/2.5));
// задание интервала и шага
double minX = -2 * Math.PI;
double maxX = 2 * Math.PI;
double step = (maxX - minX) / steps;
// создание перьев
Pen pen = new Pen(Color.Crimson, 0.01F);
Pen pen1 = new Pen(Color.Black, 0.01F);
// рисование осей
gfx.DrawLine(pen1, -7.5F, 0F, 7.5F, 0F);
gfx.DrawLine(pen1, 0F, -1.25F, 0F, 1.25F);
// вычисление первой точки
PointF p1 = new PointF((float)minX,
(float)Math.Sin(minX));
PointF p2 = new PointF();
// цикл вычисления и рисования функции
for (double x = minX; x < maxX; x += step) {
// вычисление 2 точки
p2.X = (float)x; p2.Y = (float)Math.Sin(x);
gfx.DrawLine(pen, p1, p2);
p1 = p2; // сохранение в 1 точке
}}}}
Все используемые в данном приложении классы и методы описа-
ны ранее. При задании масштабирования ис-
пользовалась область размером (15 2.5), учи-
тывая, что область значений функции Sin() от -
1 до +1, а аргумент меняется в интервале от -2π
до +2π.
Во втором примере показывается анима-
ция движения шарика (круг синего цвета) в кли-
ентской области формы с отскоком от ее границ
Страницы
- « первая
- ‹ предыдущая
- …
- 160
- 161
- 162
- 163
- 164
- …
- следующая ›
- последняя »