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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2010, 13:24   #1
zmey31313
Форумчанин
 
Регистрация: 19.11.2009
Сообщений: 155
Сообщение Необычная линия в Делфи.

Как через canvas можно нарисовать линию закрашенную градиентом?
По всем вопросам связанным с Делфи или Паскаль обращайтесь, чем смогу тем и помогу.
Помог жми на весы!!!
dmi83206389@mail.ru
zmey31313 вне форума Ответить с цитированием
Старый 17.01.2010, 13:28   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Написать свою процедуру. Градиент -это когда пропорционально координате меняется канал света. Юзаем поиск в разделе "Дельфи" по слову "градиент"
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 17.01.2010, 14:45   #3
zmey31313
Форумчанин
 
Регистрация: 19.11.2009
Сообщений: 155
Сообщение В поиске нет

Там нет как именно заливать градиентом линию, а так я сколько пытался не получаеться
По всем вопросам связанным с Делфи или Паскаль обращайтесь, чем смогу тем и помогу.
Помог жми на весы!!!
dmi83206389@mail.ru
zmey31313 вне форума Ответить с цитированием
Старый 17.01.2010, 16:10   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

В новых Дельфях есть функция - GradientFillCanvas
Пример:
Код:
uses GraphUtil;
.....................
GradientFillCanvas(Image1.Canvas,clBlue,clWhite,rect(50,50,300,70),gdHorizontal);
Для Delphi 7 разбирайтесь с функцией - GradientFill
_Dmitry вне форума Ответить с цитированием
Старый 18.01.2010, 12:44   #5
zmey31313
Форумчанин
 
Регистрация: 19.11.2009
Сообщений: 155
Сообщение

Каким способом?
По всем вопросам связанным с Делфи или Паскаль обращайтесь, чем смогу тем и помогу.
Помог жми на весы!!!
dmi83206389@mail.ru
zmey31313 вне форума Ответить с цитированием
Старый 18.01.2010, 15:46   #6
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Код функции - GradientFillCanvas
Код:
type
  TGradientDirection = (gdHorizontal, gdVertical);

procedure GradientFillCanvas(Canvas: TCanvas; StartColor, EndColor: TColor; 
  const ARect: TRect; Direction: TGradientDirection);
const
  cGradientDirections: array[TGradientDirection] of Cardinal = 
  (GRADIENT_FILL_RECT_H, GRADIENT_FILL_RECT_V);
type
  TTriVertex = packed record
    X,Y :LongInt;
    Red,Green,Blue,Alpha: Word;
  end;
var
  Vertexes: array[0..1] of TTriVertex;
  GradientRect: TGradientRect;
begin
  StartColor:=ColorToRGB(StartColor);
  EndColor:=ColorToRGB(EndColor);

  Vertexes[0].X:=ARect.Left;
  Vertexes[0].Y:=ARect.Top;
  Vertexes[0].Red:=GetRValue(StartColor) shl 8;
  Vertexes[0].Blue:=GetBValue(StartColor) shl 8;
  Vertexes[0].Green:=GetGValue(StartColor) shl 8;
  Vertexes[0].Alpha:=0;

  Vertexes[1].X:=ARect.Right;
  Vertexes[1].Y:=ARect.Bottom;
  Vertexes[1].Red:=GetRValue(EndColor) shl 8;
  Vertexes[1].Blue:=GetBValue(EndColor) shl 8;
  Vertexes[1].Green:=GetGValue(EndColor) shl 8;
  Vertexes[1].Alpha:=0;

  GradientRect.UpperLeft:=0;
  GradientRect.LowerRight:=1;

  GradientFill(Canvas.Handle, Windows.PTriVertex(@Vertexes[0])^, 2, 
  @GradientRect, 1, cGradientDirections[Direction]);
end;
_Dmitry вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы. Необычная сортировка shelest Помощь студентам 2 05.11.2009 23:18
Линия SheriffCat Microsoft Office Word 8 22.10.2009 19:20
Необычная степень числа в сумме ряда Cкулаб Общие вопросы Delphi 4 08.06.2009 20:27
Совсем необычная раскраска DBGrid-a _SERGEYX_ Общие вопросы Delphi 2 26.09.2008 09:51