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

Вниз

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 вся ветка

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

Наверх





Память: 0.45 MB
Время: 0.008 c
1-77395
Сатир
2002-06-10 15:29
2002.06.24
Использование тэгов компонентов


4-77669
Rad
2002-04-23 19:11
2002.06.24
Сообщения COM


1-77343
Voland_s
2002-06-12 20:09
2002.06.24
OUTPUT параметр в ехе-файле


1-77356
antonp
2002-06-12 21:22
2002.06.24
Как достать значение из памяти другой проги?


3-77283
sst
2002-05-29 17:10
2002.06.24
Как добавить новое поле в базу?





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