Форум: "Основная";
Текущий архив: 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 - средствами линукса
Вопрос по первой части. Как средствами ВинАпи прозрачность реализуется?
Вот что в Formsprocedure 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