Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.24;
Скачать: CL | DM;

Вниз

GIF+Region=?   Найти похожие ветки 

 
Nikolay ©   (2002-02-10 18:30) [0]

Моя очередь теперь задавать вопрос :) Уважаемые такая проблема, как можно создать непрямоугольное окно по гиф изображению (маска не меняется. т.е. гиф имеет один и тот же образ), не на до предлагать делать по точкам. т.к. гифы могут менятся и все я не смогу забить ( я не знаю какие могут быть)... Наверно немного запутанно... если что скажите что не понятно.
Заранее спасибо.


 
savva ©   (2002-02-11 15:11) [1]

с bmp просто все, почитай http://null.wallst.ru/articles/transParents.htm

с гифами будет сложнее, как показал мой опыт, там один и тот же цвет (мы его одинаково зрительно воспринимаем) имеет разное значение RGB (колеблется не в больших диапазонах). можно ввести погрешность отклонения от заданного прозрачного цвета, но так как RGB характеризует 3 цвета то там придется поковыряться с их переводом в hex ... А так попробуй, за пару часов управишься :))


 
Nikolay ©   (2002-02-11 17:56) [2]

2 savva
да я с бмп уменю работать :) мне бы с гифом :)
извини ты не мог бы поподробнее с hex?



 
wicked ©   (2002-02-13 21:51) [3]

2 savva ©
а ты часом gif с jpeg не спутал?.... gif способен отобразить максимум 256 цветов из палитры... то есть в растре хранятся однобайтовые индекса из палитры, простым языком - цвета...


 
Ajax ©   (2002-02-14 18:15) [4]

function CreateRgnFromBitmap(rgnBitmap: TBitmap): HRGN;
var
transColor: TColor;
i, j: Integer;
width, height: Integer;
left, right: Integer;
rectRgn: HRGN;
begin
Result := 0;
width := rgnBitmap.Width;
height := rgnBitmap.Height;
transColor := rgnBitmap.Canvas.Pixels[width - 1, height - 1];
for i := 0 to height - 1 do
begin
left := -1;
for j := 0 to width - 1 do
begin
if left < 0 then
begin
if rgnBitmap.Canvas.Pixels[j, i] <> transColor then
left := j;
end
else
if rgnBitmap.Canvas.Pixels[j, i] = transColor then
begin
right := j;
rectRgn := CreateRectRgn(left, i, right, i + 1);
if Result = 0 then
Result := rectRgn
else
begin
CombineRgn(Result, Result, rectRgn, RGN_OR);
DeleteObject(rectRgn);
end;
left := -1;
end;
end;
if left >= 0 then
begin
rectRgn := CreateRectRgn(left, i, width, i + 1);
if Result = 0 then
Result := rectRgn
else
begin
CombineRgn(Result, Result, rectRgn, RGN_OR);
DeleteObject(rectRgn);
end;
end;
end;
end;


 
Nikolay ©   (2002-02-15 19:28) [5]

2 Ajax © (14.02.02 18:15)

мне гиф нужен был :))) а не бмп, бмп я умел теперь гиф научился:)



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

Текущий архив: 2002.06.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
14-77570
PVOzerski
2002-05-21 10:42
2002.06.24
Что-то не то в отображении списка ответов в


3-77320
Shrek
2002-05-31 23:31
2002.06.24
Ну очень простой вопрос!


14-77604
lak_b
2002-05-22 14:06
2002.06.24
расслабьтесь! ;)


3-77267
Adventure
2002-05-30 11:43
2002.06.24
***** Поиск в Базах ***** (Помогите, серьезный вопрос!!!)


14-77547
fliz
2002-05-18 12:52
2002.06.24
народ, что в мире происходит ?