101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429

Пикчербокс нестандартной формы - не работает

04.01.2018, 18:52. Показов 1198. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! С Новым Годом всех!

Скачал пример из сети - PictureBox нестандартной формы. Но не работает. Подскажите, в чём моя ошибка?

Visual Basic
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
Option Explicit
    Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
    Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
    Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
 
    Private Type POINTAPI
        X As Long
        Y As Long
    End Type
 
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Sub ReleaseCapture Lib "user32" ()
 
    Dim P(50) As POINTAPI
    Dim Rgn As Long
 
    Private Sub cmdCreatePolygon_Click()
 
        P(0).X = 132: P(0).Y = 6
        P(1).X = 173: P(1).Y = 64
        P(2).X = 303: P(2).Y = 71
        P(3).X = 213: P(3).Y = 123
        P(4).X = 291: P(4).Y = 241
        P(5).X = 157: P(5).Y = 154
        P(6).X = 5: P(6).Y = 239
        P(7).X = 78: P(7).Y = 103
        P(8).X = 10: P(8).Y = 58
        P(9).X = 100: P(9).Y = 60
        P(10).X = 132: P(10).Y = 6
 
        Rgn = CreatePolygonRgn(P(0), 11, 0)
 
        Call SetWindowRgn(Picture1.hwnd, Rgn, True)
       
    End Sub
 
    Private Sub cmdCreateEllipse_Click()
        Call SetWindowRgn(Picture1.hwnd, CreateEllipticRgn(0, 0, 299, 200), True)
    End Sub
 
    Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = 1 Then
            Call ReleaseCapture
            Call SendMessage(Picture1.hwnd, &HA1, 2, 0&)
        End If
    End Sub
SetWindowRgn с CreateEllipticRgn работает нормально, а вот с CreatePolygonRgn - ноль реакции
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.01.2018, 18:52
Ответы с готовыми решениями:

Элемент нестандартной формы
Вопрос в следующем: есть необходимость создания круглого (или другой формы элемента), внутри которого помещается изображение. Думал как-то...

Создание нестандартной формы на VB
Подскажите кто-нить можно ли создать в vb6 форму не стандарную(квадратную), а например: круглую либо в виде текста??? ...

Кнопка нестандартной формы
Нужно создать кнопку нестандартной формы, как показано на картинке. Собственно, технически это может быть и не кнопка вовсе, а, например,...

28
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
11.01.2018, 23:25  [ТС]
Студворк — интернет-сервис помощи студентам
А картинку не видно!
Без картинки получалось, конечно.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
11.01.2018, 23:26
giaber, завтра.
0
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
11.01.2018, 23:29  [ТС]
Спасибо за помощь! Спокойной ночи. Завтра продолжим.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
12.01.2018, 07:51
Для увеличения скорости можно (и нужно) определять область которая изменилась и ее перерисовывать.
Вложения
Тип файла: zip The trick для PicCut.zip (1.31 Мб, 5 просмотров)
0
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
15.01.2018, 20:59  [ТС]
Здравствуйте, The trick!
Интегрирую вашу "конфетку" в свою прогу. Возник такой вопрос - можно ли сделать так, чтоб у конкретного отдельного прямоугольника получался цвет рамки, в любом случае контрастный с приёмником?
Хочу, чтоб при клике на фигуре она как-то выделялась...
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
15.01.2018, 21:20
Цитата Сообщение от giaber Посмотреть сообщение
Возник такой вопрос - можно ли сделать так, чтоб у конкретного отдельного прямоугольника получался цвет рамки, в любом случае контрастный с приёмником?
Можно к примеру сделать пунктирную рамку. Смотри функцию GdipSetPenDashStyle.
0
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
15.01.2018, 21:29  [ТС]
Цвет, значится, не получится, да? Жаль... Ну что ж - придётся пунктир. Спасибо.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
15.01.2018, 21:58
Цитата Сообщение от giaber Посмотреть сообщение
Цвет, значится, не получится, да? Жаль... Ну что ж - придётся пунктир. Спасибо.
Какой цвет? Я же сказал как цвет задается.
0
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
16.01.2018, 00:59  [ТС]
Не, в смысле цвет рамки, в любом случае контрастный с приёмником
А цвет заливки и рамки вообще - вы объяснили, нет проблем

Добавлено через 2 часа 41 минуту
The trick ещё такой вопрос - когда несколько фигур перекрывают друг-друга, хочется, чтобы фигура, на которой кликнули, выходила на передний план. Аналога ZOrder нету?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.01.2018, 00:59
Помогаю со студенческими работами здесь

Кнопка нестандартной формы
Нужно создать кнопку нестандартной формы, как показано на картинке. Собственно, технически это может быть и не кнопка вовсе, а, например,...

Кнопка нестандартной формы
Может кто-то сталкивался в версткой такой или похожей кнопки? Или просто видел что-то похожее реализованное? Есть возможность отрисовать ее...

Кнопки нестандартной формы
Подскажите, как можно сделать

PictureBox нестандартной формы
Доброго времени суток дорогие форумчане, пишу проект игрового лаунчера, и вот мне надо сделать картинки Login, Exit, Settigns но они не...

Окно нестандартной формы!
Здравствуйте, интернет весь перекопан, надеюсь на вашу помощь! Возможно ли сделать окно не простой прямоугольной формы, а к примеру в форме...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

Новые блоги и статьи
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru