Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429

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

04.01.2018, 18:52. Показов 1190. Ответов 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 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru