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

Вниз

CLX. Как сделать пиксель формы прозрачным?   Найти похожие ветки 

 
Glex ©   (2006-01-17 20:17) [0]

subj


 
vip60 ©   (2006-01-17 21:09) [1]

У формы есть свойство - AlphaBlend! Поставь его в true; А степень прозрачности укажи в свойстве AlphaBlendValue......кстати можно сделать обработку скрола : крутишь вверх - она появляется крутишь вниз-окно исчезает, разместив на форме Браузер-получится офигенная ШПОРА...испытано-работает!!!!


 
Glex ©   (2006-01-18 08:26) [2]

vip60
Если бы здесь можно было удалять свои посты, я бы тебе именно это посоветовал ;)

Ну так что, никто не знает? Я нигде ответ не могу найти. Придётся думать самому))))


 
Glex ©   (2006-01-18 19:45) [3]

Прошу, помогите!!!!!
Думал весь день, смотрел исходники Forms из vcl, занимался всяким шаманством - ничего не помогает!!!
Пожалуйста!


 
TStas ©   (2006-01-18 20:07) [4]

А нельзя проще - поставить свойство Transparent и TransparentColor какой-то редко используемый, ядовито-зеленый, например, а потом нужный пиксел сделать этого цвета и все. АльфаБленд не везде же работает


 
Glex ©   (2006-01-18 20:17) [5]

TStas
Перечитай вопрос. clx!!!!!!!
________________

Помогите, горю!!!!


 
sniknik ©   (2006-01-18 20:25) [6]

не там ищеш. ищи в доке по библиотеке Qt (linux). плюс, возможно, NCurces тоже линух. тк. в линуксовых прогах такое видел (прозрачность) а они на них основаны.

и вообще завязывай писать на одной оси для другой оси... т.к. такое пересечение не добавляет возможностей, а наоборот отсекает все несовпадающие...


 
Glex ©   (2006-01-19 08:49) [7]

Спасибо.
Я пишу для двух сразу)

Итак, раз универсального средства нет, придумал такое решение:
Для Windows - стандартная прозрачность средствами WinApi
Для Linux - средствами линукса

Вопрос по первой части. Как средствами ВинАпи прозрачность реализуется?

Вот что в Forms
procedure TCustomForm.SetLayeredAttribs;
const
 cUseAlpha: array [Boolean] of Integer = (0, LWA_ALPHA);
 cUseColorKey: array [Boolean] of Integer = (0, LWA_COLORKEY);
var
 AStyle: Integer;
begin
 if not (csDesigning in ComponentState) and
   (Assigned(SetLayeredWindowAttributes)) and HandleAllocated then
 begin
   AStyle := GetWindowLong(Handle, GWL_EXSTYLE);
   if FAlphaBlend or FTransparentColor then
   begin
     if (AStyle and WS_EX_LAYERED) = 0 then
       SetWindowLong(Handle, GWL_EXSTYLE, AStyle or WS_EX_LAYERED);
     SetLayeredWindowAttributes(Handle, FTransparentColorValue, FAlphaBlendValue,
       cUseAlpha[FAlphaBlend] or cUseColorKey[FTransparentColor]);
   end
   else
   begin
     SetWindowLong(Handle, GWL_EXSTYLE, AStyle and not WS_EX_LAYERED);
     RedrawWindow(Handle, nil, 0, RDW_ERASE or RDW_INVALIDATE or RDW_FRAME or RDW_ALLCHILDREN);
   end;
 end;
end;

только этот код для меня тёмный лес *(((

Подскажите плз, что отсюда нужно перенести в свою прогу, чтобы области формы опр. цвета стали полностью прозрачными!


 
sniknik ©   (2006-01-19 09:11) [8]

> только этот код для меня тёмный лес *(((
SetWindowLong(Handle, GWL_EXSTYLE, AStyle and not WS_EX_LAYERED);
RedrawWindow(Handle, nil, 0, RDW_ERASE or RDW_INVALIDATE or RDW_FRAME or RDW_ALLCHILDREN);
вот это видиш? это функции windows из модуля windows. помниш что про него тебе говорил?

> Подскажите плз, что отсюда нужно перенести в свою прогу, чтобы области формы опр. цвета стали полностью прозрачными!
из формы создаваемой виндой в форму основаную и создаваемую Qt? (в виндах заменителя от борланда насколько знаю)
НИЧЕГО ничего из одного в другом работать не будет.

p.s. при таком подходе "Я пишу для двух сразу)" ты либо должен писать в двух вариантах (две оси, две программы, ...), либо использовать только то что общее для обоих (+ хорошо разбираться в обоих системах на случай доделать то что не доделано борландом в какой нибудь из них).


 
Glex ©   (2006-01-19 20:18) [9]

sniknik

^_^

Ну, согласен теперь)
Но проект близок к завершению, а сроки поджимают. Поэтому сделаю через
{$ifdef} uses Windows {$endif} и т.п!
Но вот те две строчки, которые Вы привели, именно они отвечаю за прозрачность?


 
sniknik ©   (2006-01-19 20:28) [10]

нет они отвечают за установку параметров виндовому окну (чей хендл указан) и перерисовку. а собственно прозрачность реализована "внутри" окна (на уровне системы).

> ... Поэтому сделаю через
> {$ifdef} uses Windows {$endif} и т.п!
терзают меня смутные сомнения... что так вообще получится, и не модуль Windows тому причина.... просто совместить VCL и CLX в одном проекте.... нонсенс. (но дерзай, может у тебя и выйдет... каменный цветок ;о))



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

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

Наверх





Память: 0.47 MB
Время: 0.039 c
8-1126255955
Nec
2005-09-09 12:52
2006.02.19
Звук через Direct


2-1138452470
KiberNetIK
2006-01-28 15:47
2006.02.19
ProgressBar, и окна


2-1138786269
Kolan
2006-02-01 12:31
2006.02.19
Приведение типов массивов...


15-1138472057
tesseract
2006-01-28 21:14
2006.02.19
Свежеслямжено :-)))


15-1138327028
VitalikS
2006-01-27 04:57
2006.02.19
Защита





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