Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.09.2012, 21:51
Аватар для Mp3
Mp3 Mp3 вне форума
Новичок
 
Регистрация: 05.03.2012
Сообщения: 82
Репутация: 10
Радость Графики в делфи

Код:
procedure TForm1.onPaint(Sender: TObject);
Var x_origin, y_origin, x_left, x_right,y_up, y_down, x_step,y_step,n,i:integer;

begin
x_origin:=Form1.Width div 2;
y_origin:=Form1.Height div 2;
x_left:=round (Form1.Width/20);
x_right:=round (Form1.Width-Form1.Width/20);
y_up:=round (Form1.Height/20);
y_down :=round (Form1.Height-Form1.Height/20);
n:=10;
x_step:=round ((x_right-x_left)/n);
y_step:=round ((y_down - y_up)/n);
with Form1.Canvas do
Begin
MoveTo (x_left, y_origin);
LineTo (x_right, y_origin);
MoveTo (x_origin, y_up);
LineTo (x_origin, y_down);
for i:=1 to n-1 do
Begin
MoveTo (x_left+x_step*i, y_origin-3);
LineTo (x_left+x_step*i, y_origin+3);
MoveTo (x_origin-3, y_up+y_step*i);
LineTo (x_origin+3, y_up+y_step*i);
end;
MoveTo (x_right, y_origin);
LineTo (x_right-5, y_origin-5);
MoveTo (x_right, y_origin);
LineTo (x_right-5, y_origin+5);
MoveTo (x_origin, y_up);
LineTo (x_origin+5, y_up+5);
MoveTo (x_origin, y_up);
LineTo (x_origin-5, y_up+5);
TextOut (x_right-5, y_origin+5, 'x');
TextOut (x_origin-10,y_up+5, 'y');
TextOut (x_origin-10,y_up+200, '0');
end;
end;
end.
Админ: Учимся пользоваться тегами грамотно! При рецедиве последуют санкции!(окей)

дан код который строит координатную плоскость, но на ней штрихи(засечки) в центре не совпадает как это можно подправить подскажите плиз

Последний раз редактировалось Mp3, 27.09.2012 в 22:08.
Ответить с цитированием
  #2  
Старый 27.09.2012, 23:49
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Mp3
дан код который строит координатную плоскость, но на ней штрихи(засечки) в центре не совпадает как это можно подправить подскажите плиз
Это потому что те формулы справедливы только для дробной арифметики, но канва использует целочисленную арифметику, поэтому и приходится использовать округления до целого (round), а округления вносят ошибку. Чтобы штрихи совпадали нужно делать согласование координат. Здесь это можно сделать несколькими способами. Например вычислять x_origin и y_origin таким образом:
Код:
  x_origin := x_left + x_step * (n div 2);
  y_origin := y_up + y_step * (n div 2);
Естественно это нужно делать не в начале, а уже после того как посчитаны значения переменных x_left, x_step, y_up и y_step, т.е. как раз перед with.

И ещё убери отсюда все упоминания о Form1 - они здесь не нужны.

Да. И нолик у тебя тоже рисуется на неправильной высоте - это заметно если форму сжимать/растягивать по вертикали (чтобы при изменении размера форма перерисовывалась - на событии OnResize формы сделай Repaint). Нолик лучше рисовать как-то так:
Код:
    TextOut(x_origin - TextWidth('0') - 3, y_origin - TextHeight('0') - 3, '0');
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
Mp3 (27.09.2012)
  #3  
Старый 27.09.2012, 23:58
Аватар для Mp3
Mp3 Mp3 вне форума
Новичок
 
Регистрация: 05.03.2012
Сообщения: 82
Репутация: 10
Радость

все работает,большое спасибо,
тема закрыта
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:37.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025