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

Вниз

Полупрозрачность на Canvas   Найти похожие ветки 

 
_dmitry   (2002-12-05 15:40) [0]

Необходимо рисовать многоугольники сквозь которые просвечивался бы рисунок.
Может быть есть реализация альфа каналов в стандартных свойствах канвы (или ее имитация)?
Помогите, плз.


 
Calm   (2002-12-05 16:43) [1]

Есть компоненты для рисования, в которых есть немало всяких полезных штук, в том числе и полупрозраность. Называются FastDeep (или FastDip)
Но где взять не знаю :(


 
_dmitry   (2002-12-05 16:59) [2]

FastDIB?
Мне очень не хотелось бы использовать сторонние компоненты, из за переноса версий, и совместимости. Это самый крайний способ, если не найду что нибудь лучше....

А может быть можно как-то через WinAPI?


 
Axis_of_Evil   (2002-12-05 18:42) [3]

Авось BitBlt и BltTransparent на Canvas
вот только многоугольники:

var
Bitmap: TBitMap;
begin
Bitmap := TBitMap.Create;
Bitmap.Width, Height ....
Bitmap.Canvas.Polygon

BitBlt/BltTransparent(Bitmap...)

Если я не ошибся и у TBitMap есть Canvas


 
ЮЮ   (2002-12-06 04:13) [4]

Есть ещё Grathics32, с иходными текстами


 
_dmitry   (2002-12-06 10:47) [5]

2 Axis_of_Evil,
не совсем понял BltTransparent - это где такое есть?

2 ЮЮ,
а что это и где найти можно?


 
Fenik   (2002-12-07 18:38) [6]

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Установка уровня прозрачности изображения

Зависимости: Windows, Graphics, Math
Автор: Nikolas Chook, chook_nu@uraltc.ru, Новоуральск
Copyright: Автор Федоровских Николай
Дата: 3 сентября 2002 г.
***************************************************** }

procedure BlendBitmap(Src, Dest: TBitmap; Amount: Byte; Left, Top: Integer; BackColor: TColor; Transparent: Boolean);
function CandC(C1, C2: TRGBTriple): Boolean;
begin {Сравнение двух цветов}
Result := (C1.rgbtBlue = C2.rgbtBlue) and
(C1.rgbtGreen = C2.rgbtGreen) and
(C1.rgbtRed = C2.rgbtRed);
end;
{Процедура установления уровня прозрачности
изображения Dest, расположенного над изображением Src.
Amount - уровень прозрачности в промежутке [0..255].
Left, Top - левый верхний угол Dest.
BackColor - цвет, который не нужно изменять,
если Transparent = True.}
var x, y, y1, y2, x1, x2: Integer;
ps, pd: pRGBTriple;
rgb: TRGBTriple;
A1, A2: Double;
begin
Src.PixelFormat := pf24Bit;
Dest.PixelFormat := pf24Bit;
A1 := Amount/255;
A2 := 1 - A1;
{Изменяется только та часть изображения,
которая расположена над исходным}
y1 := Max(0, Top);
x1 := Max(0, Left);
x2 := Min(Src.Width - 1, Left + Dest.Width - 1);
y2 := Min(Src.Height - 1, Top + Dest.Height - 1);
rgb.rgbtRed := Lo(BackColor);
rgb.rgbtGreen := Lo(BackColor shr 8);
rgb.rgbtBlue := Lo((BackColor shr 8) shr 8);
for y := y1 to y2 do begin
ps := Src.ScanLine[y];
pd := Dest.ScanLine[y - Top];
Inc(ps, x1);
if Left < 0 then Inc(pd, Abs(Left));
for x := x1 to x2 do begin
if not (Transparent and CandC(pd^, rgb)) then
with pd^ do begin
rgbtBlue := Round(A1*ps^.rgbtBlue + A2*rgbtBlue);
rgbtGreen := Round(A1*ps^.rgbtGreen + A2*rgbtGreen);
rgbtRed := Round(A1*ps^.rgbtRed + A2*rgbtRed);
end;
Inc(pd);
Inc(ps);
end;
end;
end;



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

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

Наверх





Память: 0.46 MB
Время: 0.007 c
1-61649
VJar
2002-12-07 14:35
2002.12.19
Проверка идентичности двух файлов


7-61844
riland
2002-09-26 08:42
2002.12.19
Еще раз к защите данных


3-61471
Alex_Sudakov
2002-11-29 11:50
2002.12.19
MIDAS


1-61541
Sergy
2002-12-09 15:17
2002.12.19
Как редактировать файлы связи с бд (*.udl)


3-61502
Геннадий
2002-12-02 16:30
2002.12.19
Какой логин/пароль для InterBase по умолчанию?





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