Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: CL | DM;

Вниз

LineTo или рисование по мм?   Найти похожие ветки 

 
Sergonoid   (2004-12-07 18:25) [0]

Вот LineTo, или рисование прямоугольника выводят фигуру в X,Y, где Х и У - целые, а возможно ли вывести линию или другую фигуру где Х и У содержат дробь? И как например вычислив косинус вывести линую на экран, если LineTo с параметрами только целыми числами (неужели преобразовывать к целым и отбрасывать дробь?)
Подскажите плиз, очень надо


 
Jeer ©   (2004-12-07 18:34) [1]

Как ты себе представляешь 1/3 пиксела ?


 
Poirot ©   (2004-12-07 18:46) [2]

Вспомни в школе осцилограф - как там можно увеличть детализацию?!.. уеньшить количество делений на елиницу длины... :) т.е. пусть у тя буить 10 пимкселов это сантиметер:) и т.д.:)


 
Sergonoid   (2004-12-07 19:30) [3]

И что вот так и например нужно делать:
l=12.5;
h=0.5;
Rectagle(10,10,10+l*10,10+h*10)

Неужели только переводить?
А если косинус берется, что тоже необходимо также делать?

Ну может быть.


 
programania ©   (2004-12-07 20:17) [4]

Увеличьте картинку в 10 раз stretchDraw,
умножьте все координаты и pen.width на 10,
выведите что надо,
уменьщите в 10 раз со сглаживанием.

Или придется вычислять сколько нового цвета
придется на каждый пиксел, сколько старого,
смешивать их пропорционально и это выводить.


 
uny ©   (2004-12-10 07:52) [5]

график: X,Y, всего j пар значений 1..j
1 i:=2
2 moveto (i-1)-я точка
3 lineto(i точка)
4 i:=i+1 если i>j перейти к пункту6
5 перейти к пункту 2
6 ага!:)


 
MBo ©   (2004-12-10 08:15) [6]


procedure TForm1.Button1Click(Sender: TObject);
var
 x, y: array[1..50] of double;
 i: integer;
 scalex, scaley, ymin, ymax, xmin, xmax: double;
begin
 for i := 1 to 50 do begin
   y[i] := sin(i * 0.5);
   x[i] := i;
 end;
 xmin := x[1];
 xmax := x[1];
 ymin := y[1];
 ymax := y[1];
 for i := 2 to 50 do begin // или ymin:=MinValue(y);  и т.д.
   if y[i] < ymin then ymin := y[i];
   if y[i] > ymax then ymax := y[i];
   if x[i] < xmin then xmin := x[i];
   if x[i] > xmax then xmax := x[i];
 end;
 scalex := paintbox1.Width / (xmax - xmin);
 scaley := paintbox1.Height / (ymax - ymin);
 with paintbox1.canvas do begin
   moveto(trunc(scalex * (x[1] - xmin)), paintbox1.height - trunc(scaley * (y[1] - ymin)));
   for i := 2 to 50 do
     Lineto(trunc(scalex * (x[i] - xmin)), paintbox1.height - trunc(scaley * (y[i] - ymin)));
 end;
end;


 
uny ©   (2004-12-10 11:52) [7]

[6] MBo ©  
Ваша правда, lineto тоже переводит кисть там или что


 
MBo ©   (2004-12-10 12:03) [8]

>uny ©   (10.12.04 11:52) [7]
да, но нев этом суть, я привел код, поскольку подумал, что вопрошающий не осознает, как масштабировать график в прямоугольник вывода.


 
uny ©   (2004-12-10 12:33) [9]

MBo ©   (10.12.04 12:03)
а я подумал проблема как отобразить кривую между вычисленными точками, используя lineto
(т.е. не использовать формулу построения отрезка и не вычислять значение для каждой точки экрана)



Страницы: 1 вся ветка

Текущий архив: 2005.03.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
1-1110393435
Tirex
2005-03-09 21:37
2005.03.27
принудительное использование другого шрифта всей программой


1-1110659650
ALFSOFT
2005-03-12 23:34
2005.03.27
Считывание списка директорий в Combobox


14-1109922277
Иксик
2005-03-04 10:44
2005.03.27
Такие как все


1-1110626894
nastya
2005-03-12 14:28
2005.03.27
Выложить форму на TPanel


1-1110435494
boalse
2005-03-10 09:18
2005.03.27
Массив больше 1 Мб???