Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2010, 13:59   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Неровные края окружностей

Код:
For Y := 0 to BMP.bmHeight - 1 Do
       For X := 0 to BMP.bmWidth - 1 Do
        Begin
         If (Sqr(Radius) >= (Sqr(X - CenterX) + Sqr(Y - CenterY))) Then
          Begin
           Ar[X,Y].rgbtBlue := B;
           Ar[X,Y].rgbtGreen := G;
           Ar[X,Y].rgbtRed := R;
          End
        End;
Как сделать окружности неровные края (типа "покоцанных")?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.06.2010, 14:18   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну можно попробовать случайно отнимать х и у, так чтобы точка получалась немного меньше радиуса (если мерить от центра)
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 23.06.2010, 14:49   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Хм... А если просто так отнимать, то, ерунда получится. Идем то в цикле, поэтому просто так нигде не отнимешь...
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.06.2010, 14:51   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну как минимум один пиксель (самый крайний в круге) оторвать-то можно (а некоторые можно и не отрывать). Уже неровный круг будет.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 23.06.2010, 15:20   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А как определить, что это крайний пиксель?

Так:?
Код:
(Sqr(Radius) - (Sqr(X - CenterX) + Sqr(Y - CenterY)) = Sqr(Radius) * 0.01)
Но тогда не понятно, как определить коэффициент, на который следует домножать.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.06.2010, 15:37   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
 If (Sqr(Radius) = (Sqr(X - CenterX) + Sqr(Y - CenterY))) Then
так наверное?
Ведь ты раскрашиваешь область в случае если она меньше или равна радиусу? Значит если равна - то это граница края.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 23.06.2010, 16:33   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию


Код:
For Y := 0 to BMP.bmHeight - 1 Do
       For X := 0 to BMP.bmWidth - 1 Do
        Begin
         If (Sqr(Radius) > (Sqr(X - CenterX) + Sqr(Y - CenterY))) Then
          Begin
           Ar[X,Y].rgbtBlue := B;
           Ar[X,Y].rgbtGreen := G;
           Ar[X,Y].rgbtRed := R;
          End;
         If (Sqr(Radius) = (Sqr(X - CenterX) + Sqr(Y - CenterY))) Then
          Begin
           If Random(100) > Percent Then
            Begin
             Ar[X,Y].rgbtBlue := B;
             Ar[X,Y].rgbtGreen := G;
             Ar[X,Y].rgbtRed := R;
            End;
          End;
        End;
Не особо заметно...


И на маленьких тоже.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.06.2010, 18:06   #8
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Эм... Не совсем понял задачу... Что именно требуется получить?

P.S. А что за картинка на скринах? Кто автор?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 23.06.2010, 18:08   #9
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
А что за картинка на скринах? Кто автор?
хз, сто лет уже валяется.

Цитата:
Что именно требуется получить?
"Куст" вид сверху
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.06.2010, 18:08   #10
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

край пилообразный должен быть? или все равно?

так не подходит что ли?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i,x,y,r,tx,ty,ch:integer;
color:TColor;
begin
color:=RGB($f,$00,$ff);
Form1.Canvas.Pen.Color:=color;
Randomize;
x:=100;
y:=100;
r:=30;
for i:=0  to 3600 do
begin
ch:=Random(20)-5;
tx:=round(x+(r+ch)*cos(i*pi/1800));
ty:=round(y-(r+ch)*sin(i*pi/1800));
Form1.Canvas.MoveTo(x,y);
Form1.Canvas.LineTo(tx,ty);
end;

end;
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рисованием на Timage Delphi7 Dalagardi Помощь студентам 1 19.04.2010 20:48
Проблема с рисованием на canvas`e Timage (Delphi) Dalagardi Помощь студентам 9 25.03.2010 20:55
Проблема с рисованием на канве в TPaintBox pro100-delphi Помощь студентам 10 09.03.2010 19:41
проблема с рисованием сферы kady Помощь студентам 14 25.01.2010 17:48
Проблема с рисованием прямоугольника Юра. Общие вопросы Delphi 13 04.08.2007 06:08