|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
нанести на изображение полупрозрачный градиент
есть задача нанести на изображение полупрозрачный градиент с переходом от белого цвета с прозрачностью 50% до синего цвета с прозрачностью 5%
вот пример исходника процедуры, которая на image1 наносит градиент при попиксильном анализе, все бы ничего, но получается нанести только один цвет и без указания процентов, как добавить синий цвет и задать процент? Код:
procedure TForm1.save1Click(Sender: TObject); procedure ImageGradient(bitmap: tbitmap; p:boolean); type TRGB = record r: byte; g: byte; b: byte; end; ARGB = array[0..1]of TRGB; PARGB = ^ARGB; var pb, ps: PARGB; x,y,b:integer; function Min(a, b: Longint): Longint; begin if a > b then Result := b else Result := a; end; function convertByte(BaseColor: TColor; i:integer): TColor; begin if p=true then b:=Y else b:=x; //RGB(A1-(A1-B1)/h*i, A2-(A2-B2)/h*i, A3-(A3-B3)/h*i); Result := RGB(Min(GetRValue(ColorToRGB(BaseColor)) + round((255)*b/bitmap.Height), 255), Min(GetGValue(ColorToRGB(BaseColor))+ round(255*b/bitmap.Height), 255), Min(GetBValue(ColorToRGB(BaseColor))+ round(255*b/bitmap.Height), 255)); end; begin bitmap.Assign(bitmap); bitmap.PixelFormat:=pf24bit; for y:=0 to bitmap.Height-1 do begin pb:=bitmap.scanline[y]; ps:=bitmap.scanline[y]; for x:=0 to bitmap.Width-1 do begin ps[x].r:=convertByte(pb[x].r,x); ps[x].g:=convertByte(pb[x].g,x); ps[x].b:=convertByte(pb[x].b,x) end; end; end; begin ImageGradient(Image1.Picture.Bitmap,false); end; |
#2
|
|||
|
|||
если установлен imagemagick то градиент
Код:
convert -size 200x200 gradient:'rgba(255,255,255,.5)'-'rgba(0,0,255,0.95)' gradient.png >woweook< Последний раз редактировалось Pyro, 24.01.2013 в 18:49. |
#3
|
|||
|
|||
Цитата:
благодарю. а в каком исполнении этот imagemagick представлен ? как компонент ... или билиотека.. вот эта команда как из делфи запускается? |
#4
|
|||
|
|||
как отдельная программа коммандной строки, запускать их из дельфи можно по-разному
>woweook< |
#5
|
||||
|
||||
на GDI+ создать градиентную кисть:
Код:
function GdipCreateLineBrushFromRectI(rect: PGpRect; color1: ARGB; color2: ARGB; mode: LinearGradientMode; wrapMode: WarpMode; out lineGradient: GpLineGradient): GpStatus; Пишу программы за еду. __________________ |
#6
|
|||
|
|||
NumLock, благодарю за участие
я пробывл в интернете найти gdi+ компонент для делфи но не получилось этого сделатьь, я так понял это реализовано в неком юните который можно прекрепить в проэкт и использовать ту функцию которую вы озвучили. Я правильно понял ? мне нужно искать этот юнит с процедурами gdi+ ? или компонент |