Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/35: Рейтинг темы: голосов - 35, средняя оценка - 4.71
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191

Прозрачность

11.02.2011, 14:49. Показов 7586. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать прозрачной панель?

Добавлено через 3 часа 17 минут
можно что нить похожее на прозрачность.
Но сразу говорю, что под панелью будет изметяться вид
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.02.2011, 14:49
Ответы с готовыми решениями:

Прозрачность TrackBar
Добрый день. Подскажите пожалуйста, как сделать Trackbar прозрачным?

Прозрачность GroupBox
Подскажите как сделать прозрачным GroupBox

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

16
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.02.2011, 15:05
---------------------------------------

Добавлено через 2 минуты
этот код делает прозрачной форму - попробуйте применить к панели
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void WinRgn()
{
    HRGN All, TempRgn;
    int x, y, i;
    x = (div(Form1->Width - Form1->ClientWidth, 2)).quot;
    y = Form1->Height - Form1->ClientHeight - x;
    All = CreateRectRgn(0, 0, Form1->Width, Form1->Height);
    TempRgn = CreateRectRgn(x, y, x + Form1->ClientWidth, y + Form1->ClientHeight);
    CombineRgn(All, All, TempRgn, RGN_DIFF);
    for (i = 0; i < Form1->ControlCount; i++) {
    TempRgn = CreateRectRgn(x + Form1->Controls[i]->Left,
    y + Form1->Controls[i]->Top,
    x + Form1->Controls[i]->Left + Form1->Controls[i]->Width,
    y + Form1->Controls[i]->Top + Form1->Controls[i]->Height);
    CombineRgn(All, All, TempRgn, RGN_OR);
}
    SetWindowRgn(Form1->Handle, All, true);
    //return 1;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   inherited TForm1();
    HorzScrollBar->Visible = false;
    VertScrollBar->Visible = false;
    WinRgn();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{
 inherited TForm1();
    WinRgn();
}
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
11.02.2011, 15:15
LK, код обрезает форму.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.02.2011, 15:41
а, ну да ...
0
68 / 68 / 9
Регистрация: 10.02.2011
Сообщений: 131
11.02.2011, 16:16
Прозрачная панель есть в JVCL

P.S.
Вбейте в гугл текст: "Прозрачная панель есть в JVCL" и перейдите по первой ссылке
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
11.02.2011, 20:32  [ТС]
чёт я там не понимаю ничего)
я хочу сделать, что бы панель была прозрачной, а под ней Memo. при наведении курсора на панель, прозрачность исчезала

Добавлено через 29 секунд
или можно сделать что бы картинка исчезала плавно??
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.02.2011, 21:02
код покажите
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
11.02.2011, 21:07  [ТС]
кода пока нету, но будет примерно так, на форме Memo, верхняя половина Memo будет закрыта прозрачной картинкой, так что бы было выдно текст на Memo. При наведении на картинку, прозрачность исчезает и картинка становится полностью видимой(без прозрачности)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.02.2011, 21:27
Цитата Сообщение от ProstoMad Посмотреть сообщение
кода пока нету
Я код дал тебе давно, как нет кода ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// .Н
#include <Graphics.hpp>
//---------------------------------------------------------------------------
void WinRgn();
 
// .СРР
 
void WinRgn()
{
        HRGN All, TempRgn;
        int x, y, i;
        x = (div(Form1->Panel1->Width - Form1->Panel1->ClientWidth, 2)).quot;
        y = Form1->Panel1->Height - Form1->Panel1->ClientHeight - x;
        All = CreateRectRgn(0, 0, Form1->Panel1->Width, Form1->Panel1->Height);
        TempRgn = CreateRectRgn(x, y, x + Form1->Panel1->ClientWidth, y + Form1->Panel1->ClientHeight);
        CombineRgn(All, All, TempRgn, RGN_DIFF);
        for (i = 0; i < Form1->Panel1->ControlCount; i++) {
        TempRgn = CreateRectRgn(x + Form1->Panel1->Controls[i]->Left,
        y + Form1->Panel1->Controls[i]->Top,
        x + Form1->Panel1->Controls[i]->Left + Form1->Panel1->Controls[i]->Width,
        y + Form1->Panel1->Controls[i]->Top + Form1->Panel1->Controls[i]->Height);
        CombineRgn(All, All, TempRgn, RGN_OR);
}
        SetWindowRgn(Form1->Panel1->Handle, All, true);
        //return 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseEnter(TObject *Sender)
{
    WinRgn();
}
//---------------------------------------------------------------------------
а, ну да : ну поменяй там в функции void WinRgn() Panel1 на Image1 , ну и расположи все соответственно - внизу Мемо, над ним - Имейдж .
Результат:
1. - До движения мышью. 2. После движения.
Миниатюры
Прозрачность  
Изображения
 
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.02.2011, 21:33
А зачем такие извраты ? Можно просто сделать OnMouseEnter
C++
1
Image1->Visible = false;
OnMouseLeave
C++
1
Image1->Visible = true;
. Постепенное проявление у меня было, надо поискать, но не сегодня.
И если тебе дают код и там пишет FORM , это не значит, что оно не будет работат для IMAGE или PANEL , и пробуй делать, а не слушать, что там говорят про обрезание .
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
12.02.2011, 05:13
LK facepalm
прозрачность - это когда просвечиваются элементы и можно задать уровень прозрачности. опять путаешь и людей в заблуждение заводишь.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
12.02.2011, 05:29
Цитата Сообщение от kzru_hunter
1. LK facepalm
2. прозрачность - это когда просвечиваются элементы и можно задать уровень прозрачности.
3. опять путаешь и людей в заблуждение заводишь.
1. Это я тебе прощаю.
2. Про это уже было, внимательней читай тему
Цитата Сообщение от LK
Постепенное проявление у меня было, надо поискать, но не сегодня.
3. Единственное, что я перепутал, это когда прозрачность должна быть, а когда ее быть не должно , исправить ситуацию просто - достаточно поменять обработчик, что не составляет труда.
4. Вместо того, чтобы постоянно тявкать, предложил бы лучше рабочий код, решаюший проблему .
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
12.02.2011, 06:01
2. Про это уже было, внимательней читай тему
где? jvcl? ты им пользовался? покажи мне тогда эту панель.

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

нужна прозрачность как тут:
http://www.c-sharpcorner.com/U... trols.aspx
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
12.02.2011, 06:16
Цитата Сообщение от kzru_hunter Посмотреть сообщение
1. где? jvcl? ты им пользовался? покажи мне тогда эту панель.
2. стандартного решения нету, если не ошибаюсь. вот и жду, когда кто-нибудь предложит решение этой проблемы
3. но ты не даешь
4. постоянно засоряешь темы.
5. нужна прозрачность как тут:
1. При чем тут vcl? И я очень редко пользуюсь сторонними компонентами
2. А ты не жди - делай сам .
3. Я тебя за руки не держу.
4. Это не твоя зона ответственности.
5. см. п.2,3.

! И не обращайся в будущем ко мне - ты мне не интересен .
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
12.02.2011, 20:36
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "Unit1.h"
#include <Graphics.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
BLENDFUNCTION bf; // Структура
TControlCanvas *MyCanvas;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//  Все это можно указать в Инспекторе объектов,
//  задав свои значения. Привожу для понятности.
  Form1->DoubleBuffered = true;
  Form1->Position = poScreenCenter;
  Memo1->Width = 200;
  Memo1->Height = 200;
  Memo1->Text = "Наведите курсор на поле Мемо.\r\n"
                "Уберите курсор за пределы Мемо.\r\n"
                "Повторите несколько раз.\r\n\r\n"
                "Для удаления картинки\r\n"
                "начните вводить текст в Мемо.\r\n";
  MyCanvas = new TControlCanvas;
  MyCanvas->Control = Memo1;
  MyCanvas->CleanupInstance();
  Image1->Picture->LoadFromFile("test200x100.bmp");
  Image1->Stretch = true;
  Image1->Width = 200;
  Image1->Height = 100;
  Image1->Visible = false;
// Конец -  Все это можно указать в Инспекторе объектов,
// Структура BLENDFUNCTION
  bf.BlendOp = AC_SRC_OVER;
  bf.BlendFlags = 0;
  bf.AlphaFormat = 0; // AC_SRC_ALPHA
  bf.SourceConstantAlpha = 50; // 255
// Конец - Структура BLENDFUNCTION
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Memo1MouseEnter(TObject *Sender)
{
//  Картинка появляется при нескольких последовательных заходах курсора в Мемо
//  for (int i=0; i <= 50; i++) { // Раскомментировать для отмены постепенного закрашивания
  ::AlphaBlend(MyCanvas->Handle, 0, 0, Image1->Width,
                                       Image1->Height,
                                       Image1->Canvas->Handle, 0, 0,
                                       Memo1->Width, Image1->Height, bf);
//  } // Раскомментировать для отмены постепенного закрашивания
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Memo1KeyPress(TObject *Sender, wchar_t &Key)
{
  Memo1->Invalidate();
}
//---------------------------------------------------------------------------
Вложения
Тип файла: rar Win32.rar (459.5 Кб, 78 просмотров)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
12.02.2011, 22:00
Для постепенного появления картинки добавить в код Sleep();.
C++
1
2
3
4
5
6
7
for (int i=0; i <= 100; i++) {
Sleep(50);
::AlphaBlend(MyCanvas->Handle, 0, 0, Image1->Width,
                                     Image1->Height,
                                     Image1->Canvas->Handle, 0, 0,
                                     Memo1->Width, Image1->Height, bf);
}
Плавность и продолжительность проявления можно регулировать значениями
C++
1
2
for (int i=0; i <= ВАШЕ_ЗНАЧЕНИЕ; i++)
Sleep(ВАШЕ_ЗНАЧЕНИЕ);
Все это можно немного оптимизировать, добавив на форму Timer
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//  Все это можно указать в Инспекторе объектов,
//  задав свои значения. Привожу для понятности.
//... Предыдущие значения
  Timer1->Interval = 100;
  Timer1->Enabled = false;
// Конец - Все это можно указать в Инспекторе объектов,
//...
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Memo1MouseEnter(TObject *Sender)
{
  Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  ::AlphaBlend(MyCanvas->Handle, 0, 0, Image1->Width,
                                       Image1->Height,
                                       Image1->Canvas->Handle, 0, 0,
                                       Memo1->Width, Image1->Height, bf);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Memo1KeyPress(TObject *Sender, wchar_t &Key)
{
  Memo1->Invalidate();
  Timer1->Enabled = false;
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
12.02.2011, 22:08
-------------------------------------------------
Вложения
Тип файла: rar TransparentImageOverMemo.rar (461.2 Кб, 109 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.02.2011, 22:08
Помогаю со студенческими работами здесь

Прозрачность формы
Прозрачность формы с помощью TrackBar! можете написать код)?

Прозрачность картинки
Как сделать так чтобы можно было регулировать прозрачность Image от 0 до 100(т.е. при нулевой отметке картинки не видно), для Формы есть...

PNG прозрачность
У меня BCB 2010 там есть TPNGImage.hpp есть возможность создавать png холсты))) так вот мне нужно создать холст фон которого будет...

Прозрачность TListBox
Всем привет у меня есть картинка и ListBox мне нужно сделать чтобы фон ListBox был прозрачным а текст нет. Чтобы поставить под него...

Форма, рисование и прозрачность?
Подскажите, чем можете: 1)Есть ли методы рисования на форме, различными фигурами, с плавными краями(размытыми)? 2)Как на форме рисовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru