Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/89: Рейтинг темы: голосов - 89, средняя оценка - 4.96
33 / 32 / 7
Регистрация: 13.12.2010
Сообщений: 342

Прозрачный фон у PictureBox

27.04.2012, 17:42. Показов 18519. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня в PictureBox ромбик в формате .png. На форме рисуется линия к ромбику. Но эта линия "перекрывается" краями PictureBox.
Как сделать так, что бы фон PictureBox был прозрачным и линию было видно через прозрачные части изображения?
Миниатюры
Прозрачный фон у PictureBox  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.04.2012, 17:42
Ответы с готовыми решениями:

Прозрачный фон у картинки на элементе PictureBox непрозрачен для другого PictureBox
Здравствуйте! Проблема состоит в следующем! У меня есть картинка .png с прозрачным фоном. При создании PictureBox с этой картинкой, фон по...

Прозрачный фон pictureBox
Как сделать так чтоьы фон pictureBox был прозрачным но просто изменить BackColor на птранспарент не работает - он становится прозрачнім...

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

5
33 / 32 / 7
Регистрация: 13.12.2010
Сообщений: 342
01.05.2012, 19:23  [ТС]
Проблема решена с помощью:
C#
1
2
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); // в конструкторе
PictureBox.BackColor = Color.Transparent;
Но возникла новая - при движении PictureBox лагает, вменяемо прорисовуется только когда остановить движение.
Подскажите пожалуйста, как можно исправить эту проблему?
1
 Аватар для hack2root
6 / 6 / 1
Регистрация: 01.05.2012
Сообщений: 17
01.05.2012, 22:13
Используй GDI Interop

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
    public class GdiInterop
    {
        /// <summary>
        /// Enumeration for the raster operations used in BitBlt.
        /// In C++ these are actually #define. But to use these
        /// constants with C#, a new enumeration _type is defined.
        /// </summary>
        public enum TernaryRasterOperations
        {
            SRCCOPY = 0x00CC0020, // dest = source
            SRCPAINT = 0x00EE0086, // dest = source OR dest
            SRCAND = 0x008800C6, // dest = source AND dest
            SRCINVERT = 0x00660046, // dest = source XOR dest
            SRCERASE = 0x00440328, // dest = source AND (NOT dest)
            NOTSRCCOPY = 0x00330008, // dest = (NOT source)
            NOTSRCERASE = 0x001100A6, // dest = (NOT src) AND (NOT dest)
            MERGECOPY = 0x00C000CA, // dest = (source AND pattern)
            MERGEPAINT = 0x00BB0226, // dest = (NOT source) OR dest
            PATCOPY = 0x00F00021, // dest = pattern
            PATPAINT = 0x00FB0A09, // dest = DPSnoo
            PATINVERT = 0x005A0049, // dest = pattern XOR dest
            DSTINVERT = 0x00550009, // dest = (NOT dest)
            BLACKNESS = 0x00000042, // dest = BLACK
            WHITENESS = 0x00FF0062, // dest = WHITE
        };
 
        /// <summary>
        /// Enumeration to be used for those Win32 function 
        /// that return BOOL
        /// </summary>
        public enum Bool
        {
            False = 0,
            True
        };
 
        /// <summary>
        /// Sets the background color.
        /// </summary>
        /// <param name="hdc">The HDC.</param>
        /// <param name="crColor">Color of the cr.</param>
        /// <returns></returns>
        [DllImport("gdi32.dll")]
        public static extern int SetBkColor(IntPtr hdc, int crColor);
 
        /// <summary>
        /// CreateCompatibleDC
        /// </summary>
        [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)]
        public static extern IntPtr CreateCompatibleDC(IntPtr hDC);
 
        /// <summary>
        /// DeleteDC
        /// </summary>
        [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)]
        public static extern Bool DeleteDC(IntPtr hdc);
 
        /// <summary>
        /// SelectObject
        /// </summary>
        [DllImport("gdi32.dll", ExactSpelling = true)]
        public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObject);
 
        /// <summary>
        /// DeleteObject
        /// </summary>
        [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)]
        public static extern Bool DeleteObject(IntPtr hObject);
 
        /// <summary>
        /// CreateCompatibleBitmap
        /// </summary>
        [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)]
        public static extern IntPtr CreateCompatibleBitmap(IntPtr hObject, int width, int height);
 
        /// <summary>
        /// BitBlt
        /// </summary>
        [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)]
        public static extern Bool BitBlt(IntPtr hObject, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hObjSource, int nXSrc, int nYSrc, TernaryRasterOperations dwRop);
 
        /// <summary>
        /// StretchBlt
        /// </summary>
        [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)]
        public static extern Bool StretchBlt(IntPtr hObject, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest, IntPtr hObjSource, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, TernaryRasterOperations dwRop);
 
        /// <summary>
        /// SetStretchBltMode
        /// </summary>
        [DllImport("gdi32.dll", ExactSpelling = true, SetLastError = true)]
        public static extern Bool SetStretchBltMode(IntPtr hObject, int nStretchMode);
    }
1
33 / 32 / 7
Регистрация: 13.12.2010
Сообщений: 342
02.05.2012, 18:42  [ТС]
Спасибо, но я не могу понять, чем это будет мне полезно
0
 Аватар для hack2root
6 / 6 / 1
Регистрация: 01.05.2012
Сообщений: 17
02.05.2012, 19:48
статичный фон - это набор отрендеренных примитовов во вторичном буфере
движущийся обьект - это обьект с альфаканалом прозрачности из оффскрин буфера

0. рассчитываешь новое положение обтекта анимации.
1. затираешь предыдущее положение обькта, скопировав часть фона из вторичного буфера на первичный
2. на первичном буфере рисуешь прямугольник обьекта с внеэкранной плоскости
3. запоминаешь обновленное положение обьекта

ну это элеиентарно. через GDI+ не сможешь работать с альфа-кналоами, а через GDI - сможешь (имеется в виу прямой вызов нативных функций Win32: BitBlt, BltFast и StretchBlt, в зависимости от потребностей.

тебе пример чо-ли скинуть?

а про pictureBox забудь
1
33 / 32 / 7
Регистрация: 13.12.2010
Сообщений: 342
02.05.2012, 22:47  [ТС]
не откажусь от примера
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2012, 22:47
Помогаю со студенческими работами здесь

Прозрачный фон у pictureBox
Как его установить? Ставлю картинку .png, вижу белый задний фон у pictureBox. Хорошо было бы узнать, как настраивать прозрачность в нём ...

Как сделать прозрачный фон у PictureBox?
Здравствуйте дорогие участники форума! Я новичок в C#. Создаю игру в Visual Studio2015. Как сделать сделать PictureBox прозрачным для...

Прозрачный фон у изображения на фоне PictureBox
Начал писать программу и сразу столкнулся с проблемой. Любое изображение отображается со своим фоном как прозрачным, так и не прозрачным....

Как сделать прозрачный фон у PictureBox?
Нашол что можно сделать так this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); // в конструкторе ...

Не получается сделать прозрачный фон картинки в PictureBox
Проблема в заголовке. Много искал на форуме различных способов, но ни один не помогает Вот пример: pictureBox1.BackColor =...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru