Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хочу нарисовать линию на имаге, есть точка, нет точки, есть точка и т.д. 
:(
    Опции темы
EKoshelev
Дата 13.1.2005, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



Короче, хотелось бы линию рисовать на имаге как обычную линию, только у которой половины точек нет. Ну, типа, пунктир такой хитрый, точка есть, точки нет, точка есть, точки нет и т. д. Надеюсь, понятно объяснил.

Разные извращения со стилями ничего не дали (может плохо извращался). Посоветуйте пожалуйста кто-нибудь что-нибудь.


--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
Zero
Дата 13.1.2005, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Так был же такой вопрос, причём сам его задал. smile
PM MAIL ICQ   Вверх
EKoshelev
Дата 13.1.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



Zero
Мне предложили создать его в другом разделе. Я и создал.


--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
Illusion Dolphin
Дата 13.1.2005, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



Код

procedure Line(image : TBitmap; x_begin,y_begin,x_end,y_end : integer; Color: Tcolor);
var
 fx,fy,i : integer;
 x,y,tg : real;
 p : Pargb;
 r,g,b : byte;
 is_ : boolean;

Procedure Replace(var x1,x2 : integer);
var
  temp : integer;
begin
 temp:=x1;
 x1:=x2;
 x2:=temp;
end;

begin
image.PixelFormat:=pf24bit;
r:=GetRValue(Color);
g:=GetGValue(Color);
b:=GetBValue(Color);
if ((y_end - y_begin)=0)  and ((x_end - x_begin)=0) then
begin
 p:=image.ScanLine[y_begin];
 p[x_begin].r:=r;
 p[x_begin].g:=g;
 p[x_begin].b:=b;
 exit;
end;
if (abs(x_end-x_begin) < abs(y_end-y_begin)) and ((y_end - y_begin)<>0)  then
begin
 if y_begin>y_end then
 begin
  replace(x_begin,x_end);
  replace(y_begin,y_end);
 end;
 tg:=((x_begin-x_end)/(y_begin-y_end));
 for i:=y_begin to y_end do
 begin
  if is_ then is_:=false else is_:=true; //за что угодно бейте, но не за эту строчку
  // is_:=not is_; почему-то у меня не работало о_О
  if is_ then continue;
  x:=x_begin+(i-y_begin)*tg;
  fx:=round(x);
  fy:=round(i);
  p:=image.ScanLine[fy];
  p[fx].r:=r;
  p[fx].g:=g;
  p[fx].b:=b;
 end;
end;
if  (abs(x_end-x_begin) >= abs(y_end-y_begin)) and ((x_end - x_begin)<>0) then
begin
 if x_begin>x_end then
 begin
  replace(x_begin,x_end);
  replace(y_begin,y_end);
 end;
 tg:=((y_end-y_begin)/(x_end-x_begin));
 for i:=x_begin to x_end do
 begin
  if is_ then is_:=false else is_:=true;

  if is_ then continue;
  y:=y_begin+(i-x_begin)*tg;
  fx:=round(i);
  fy:=round(y);
  p:=image.ScanLine[fy];
  p[fx].r:=r;
  p[fx].g:=g;
  p[fx].b:=b;
 end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var bitmap : TBitmap;
begin
bitmap:=Tbitmap.create;
bitmap.Width:=200;
bitmap.height:=200;
bitmap.PixelFormat:=pf24bit;
Line(bitmap,190,10,100,50,$ff);
canvas.Draw(0,0,bitmap);
bitmap.Free;
end;



--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Girder
Дата 14.1.2005, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 2
Всего: 155



Цитата(Illusion @ 13.1.2005, 16:56)
if is_ then is_:=false else is_:=true; //за что угодно бейте, но не за эту строчку
smile А за что бить? smile Я так часто пишу для наглядности для других.

PS: is_:=is_ xor true;

Это сообщение отредактировал(а) Girder - 14.1.2005, 11:53


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
EKoshelev
Дата 14.1.2005, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



Illusion Dolphin
Слушай, братище, офигенно большое тебе спасибо. Только я забыл сказать, что мне нужно будет выводить только вертикальные и горизонтальные линии. Ты уж прости меня, ладно? А то только зря напрягался...


--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
Illusion Dolphin
Дата 14.1.2005, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 13
Всего: 63



EKoshelev: да ничего... я ж даже не напрягался smile

[offtop]
Girder:
А почему именно xor? почему not не работает? что-то не совсем понимаю... По логике должно работать... как компилятор понимает эту строчку?
[/offtop]


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Girder
Дата 14.1.2005, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 2
Всего: 155



Компилятор... может путаться, вместо xor RR,1 иногда вставлять not RR

Это сообщение отредактировал(а) Girder - 14.1.2005, 14:56


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0785 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.