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

Вниз

Радиальный градиент. Как создать в Делфи7?   Найти похожие ветки 

 
Tifon ©   (2007-04-04 13:59) [0]

Подскажите алгоритм или ссылку, знаю как создать полосный, разной длины, но немогу понять как создать радиальный, может кто знает.


 
Думкин ©   (2007-04-04 14:06) [1]

Покажи как полосный. Переделаем в радиальный.


 
Думкин ©   (2007-04-04 14:19) [2]

Canvas.Ellipse()


 
Tifon ©   (2007-04-04 14:25) [3]

while a <= x - 2 do
  {Перед рисованием я задаю ему цвет и в этом же цикле по RGB палитре уменьшаю его, для создания уходящего градинта, первый цвет у меня определяется по интенсивности x, а второй - черный}
   Im.Canvas.MoveTo(75, Im.Height div 2 - a + 1);
   Im.Canvas.LineTo(275, Im.Height div 2 - a + 1);
   Im.Canvas.MoveTo(75, Im.Height div 2 + a - 1);
   Im.Canvas.LineTo(275, Im.Height div 2 + a - 1);
{так у меня получается две расходящиеся линии градиента вниз и вверх, одного цвета}
end;


 
Tifon ©   (2007-04-04 14:26) [4]

>Canvas.Ellipse()

а пойдет ли? когда рисуешь эллипс, то он внутри не полый.


 
Думкин ©   (2007-04-04 14:29) [5]


> Tifon ©   (04.04.07 14:26) [4]

А ты от внешнего к внутреннему иди.


 
Tifon ©   (2007-04-04 14:31) [6]

с эллипсом получается проблема, я попробовал его рисовать не из нутри а с наружи, уменьшая его радиус, и тогда у меня получается эффект градинта, но есть пропуски на местах закруглений.


 
Думкин ©   (2007-04-04 14:31) [7]

Либо стиль у кисти выставь bsClear


 
Tifon ©   (2007-04-04 14:31) [8]

а что дает этот стиль?


 
Думкин ©   (2007-04-04 14:33) [9]

> Tifon ©   (04.04.07 14:31) [8]

Не заполняет внутренность. Это если от внутреннего к внешнему.


 
Tifon ©   (2007-04-04 14:38) [10]

Даже если рисовать изнутри с bsClear, получается такая же проблема.

Похоже, что эллипсы различающиеся диаметром на единицу не сливаются полностью, все равно есть места пропусков.

Думкин, а ты не знаешь какой стиль у Canvas.Brush, чтоб он полностью заливал эллипс?


 
MBo ©   (2007-04-04 14:48) [11]

Можно использовать функцию GradientFill, рисуя узкие треугольники с вершиной в центре круга


 
Tifon ©   (2007-04-04 15:05) [12]

рисуя узкие треугольники с вершиной в центре круга

извини, но не совсем понял, это как? солько, в какие стороны, треугольники - линиями или у canvas есть функция рисования треугольников?


 
{RASkov}   (2007-04-04 15:24) [13]

Рисуй эти элипсы от края к центру с Brush.Style=bsSolid, Brush.Color=NewColor и PenColor:=NewColor Думаю мысль понял?


 
MBo ©   (2007-04-04 15:29) [14]

Ты в WInSDK хелпе или в MSDN про GradientFill почитал?

Предупреждаю, что использование этой функции -  не очень простая задача.


 
{RASkov}   (2007-04-04 15:37) [15]

Пример к [13] на всякий случай, если с GradientFill будут проблемы.
procedure TForm1.Button1Click(Sender: TObject);
var N, X, Y: Integer; Cl: TColor;
begin
 X:=Width div 2;
 Y:=Height div 2;
 Canvas.Brush.Style:=bsSolid;
 for N:= 0 to 100 do begin
  Cl:=RGB(N+100, N+150, N);
  Canvas.Brush.Color:=Cl;
  Canvas.Pen.Color:=Cl;
  Canvas.Ellipse(X+(100-N), Y+(100-N), X-(100-N), Y-(100-N));
 end;
end;


 
Tifon ©   (2007-04-04 15:48) [16]

Наконец, все получилось, просто нужно было дважды задавать Brush.Color., а второй раз задавать его с Pen.Color.

Вообщето я делал, спектро анализатор, и в таймере при отображении, я сначала заливал Image черным цветом, это мой конечный цвет градиента, а потом уже рисовал сам градиент, и у меня не получалось, но к стате, при Brush.Style = bcSolid, когда я в цикле рисовал эллипсы, задавая только Brush.Color  без Pen.Color, у меня зарисовывались как раз те пиксели, которые при прежних попытках не зарисовывались:)

Большое всем спасибо за помощь.:)


 
StriderMan ©   (2007-04-04 16:19) [17]

это что в итоге получается? эллипс темнее снаружи и светлее внутри?

я как-то эллиптические кнопки делал. там градиент нужен был по фаске (для эффекта выпуклости). делал через Canvas.Arc


 
Amoeba ©   (2007-04-04 16:39) [18]

Относительно реализации "хитрых" градиентных заливок можно посмотреть исходники одного интересного компонента:
http://anfilat.chat.ru/tpcolore.htm


 
Tifon ©   (2007-04-04 17:30) [19]

>это что в итоге получается? эллипс темнее снаружи и светлее внутри?

да, но я делал его кругом, а не эллипсом, хотя, конечно, функцию использовал туже:)

Amoeda, а на 7 Делфи они пойдут? ты не пробовал?


 
Amoeba ©   (2007-04-04 17:42) [20]


> Tifon ©   (04.04.07 17:30) [19]
>
> >это что в итоге получается? эллипс темнее снаружи и светлее
> внутри?
>
> да, но я делал его кругом, а не эллипсом, хотя, конечно,
>  функцию использовал туже:)
>
> Amoeda, а на 7 Делфи они пойдут? ты не пробовал?

Нет, использую D5. Но на D7 пойти обязаны, может лишь кое-что придется подправить, скорее всего в Uses (компилятор ткнет носом)



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

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

Наверх





Память: 0.49 MB
Время: 0.043 c
2-1175594493
Alex_C
2007-04-03 14:01
2007.04.22
Как правильно определить многомерный динамический массив?


8-1148316794
Vasiliy
2006-05-22 20:53
2007.04.22
Подскажите как воспроизвести AVI на Texture:IDIRECT3DTEXTURE8


2-1175162634
YadlU
2007-03-29 14:03
2007.04.22
Разность даты/время


15-1175167188
Чапаев
2007-03-29 15:19
2007.04.22
Виста рулит!


1-1172505251
Inna_Z
2007-02-26 18:54
2007.04.22
Ошибке при динамоческой загрузке BPL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский