Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "Media";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.044 c
1-1110869672
Alex_k
2005-03-15 09:54
2005.03.27
Прятать поле Excel из Дельфи......


1-1110630206
redlord
2005-03-12 15:23
2005.03.27
ошибка при удалении из Tstringlist


3-1109421869
Bogdan
2005-02-26 15:44
2005.03.27
Имя поля DBGrid строками


8-1102816081
I m A
2004-12-12 04:48
2005.03.27
Пунктирная линия


8-1102337855
Delta
2004-12-06 15:57
2005.03.27
Рисуемс





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский