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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.033 c
2-1138582094
Anatoly123
2006-01-30 03:48
2006.02.19
QReports


2-1138724763
Arazel
2006-01-31 19:26
2006.02.19
Как удалить запись раз и на всегда (AdoTable)


6-1131019628
S46E
2005-11-03 15:07
2006.02.19
Сканирование открытых UDP портов


2-1138977069
буржуй
2006-02-03 17:31
2006.02.19
Как мне удалить себя внутри себя?


1-1137769002
Tristania
2006-01-20 17:56
2006.02.19
Работа с msi-форматом и инсталляция программы