Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
6 / 6 / 1
Регистрация: 21.01.2012
Сообщений: 92
1

Обрезка формы по контуру рисунка

05.03.2014, 18:23. Показов 1180. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Хотел создать форму в видекарты России, но что-то не нашел достаточно материала как можно обрезать форму.

Нашел пример кода как обрезать форму по контуру текста, а с рисунком не разобрался что-то.
Просьба помочь!
Заранее признателен!

Вот пример кода, который нашел:
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
Private Declare Function SelectClipPath Lib "gdi32" (ByVal hdc As Long, ByVal iMode As Long) As Long
Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc 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 Const RGN_COPY = 5
 
Private Sub Form_Load()
Const TXT = " Cool programm" & vbCrLf & " from" & vbCrLf & "Cool Company" & vbCrLf & "CopyLeft by Ark"
Dim hRgn As Long
'â äàííîì ïðèìåðå ôîðìó îêíà áóäåò îïðåäåëÿòü íàäïèñü
Font.Name = "Times New Roman"
Font.Bold = True
Font.Size = 60
Width = TextWidth(TXT)
Height = TextHeight(TXT)
BeginPath hdc
CurrentX = 0
CurrentY = 0
Print TXT
' Çäåñü âìåñòî òåêñòà ìîæíî ðèñîâàòü ôèãóðû
EndPath hdc
hRgn = PathToRegion(hdc)
SetWindowRgn hWnd, hRgn, False
 
' Hà÷èíàåì ôàíòàçèðîâàòü ñ ôîðìîé. Ìîæíî òàê
Picture = LoadPicture("C:\Users\Àëåêñàíäð\Desktop\map_rkc1.gif")
' À ìîæíî òàê
'dclr = 256 / (TextHeight(TXT) / 30)
'clr = 0
For i = 120 To 120 + TextHeight(TXT) Step 30
 Line (0, i)-Step(5000, 0), RGB(0, 0, clr)
 clr = clr + dclr
Next i
' Ìîæíî äàòü ôîðìå ãðàäèåíòíóþ çàëèâêó è ò.ä.
' Äâèãàåì ê öåíòðó, à ìîæíî â òàéìåðå êðóòèòü
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2014, 18:23
Ответы с готовыми решениями:

Обрезка формы по рисунку
Всем привет: Использую процедуры для обрезки формы по рисунку function...

Движение картинки по контуру формы
Есть готовая программа которую надо исправить. Сейчас двигается изображение внутри формы рандомно и...

Изменить программу так, чтобы картинка двигалась по контуру формы
Ребят, привет. Помогите, пожалуйста изменить программу, так, чтобы картинка двигалась по контору...

Вставка рисунка в вкладку формы
У меня форма с вкладками. Я хочу ее приукрасить и вставить рисунок в вкладки, но не найду как это...

9
Модератор
9725 / 3686 / 871
Регистрация: 22.02.2013
Сообщений: 5,531
Записей в блоге: 78
05.03.2014, 18:48 2
Лучший ответ Сообщение было отмечено mazahaker-ncux как решение

Решение

Альфа - наложение - полупрозрачность
Вложения
Тип файла: rar ColorKeyWindow.rar (2.8 Кб, 27 просмотров)
2
6 / 6 / 1
Регистрация: 21.01.2012
Сообщений: 92
05.03.2014, 19:02  [ТС] 3
спасибо, огромное!!! очень помогли!
а можно ли избежать следующей ситуации? на форме лежат Shape в форме Cirle в количестве 11 штук, и получается после обрезки Россия. как бы трагично это не звучало, вся в "дырочку".

Добавлено через 5 минут
хотя в принципе такая ситуация возникает только в случае если BackColor у Cirle белый, во всех остальных случаях не дырявит красивую(теперь уже) форму. BackColor у меня все равно будет отличаться от белого цвета. еще раз спасибо!
0
Модератор
9725 / 3686 / 871
Регистрация: 22.02.2013
Сообщений: 5,531
Записей в блоге: 78
05.03.2014, 19:03 4
Цитата Сообщение от mazahaker-ncux Посмотреть сообщение
спасибо, огромное!!! очень помогли!
а можно ли избежать следующей ситуации? на форме лежат Shape в форме Cirle в количестве 11 штук, и получается после обрезки Россия. как бы трагично это не звучало, вся в "дырочку".
Нужно чтобы цвет шейпов отличался от цвета фона, который ты делаешь прозрачным.
1
6 / 6 / 1
Регистрация: 21.01.2012
Сообщений: 92
05.03.2014, 19:04  [ТС] 5
Цитата Сообщение от The trick Посмотреть сообщение
Нужно чтобы цвет шейпов отличался от цвета фона, который ты делаешь прозрачным.
точно, здесь же как раз таки белый цвет и исключается
0
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
06.03.2014, 01:47 6
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от mazahaker-ncux Посмотреть сообщение
Хотел создать форму в видекарты России


Не по теме:

Какая-то ерунда творится у меня на этой машине.
Сделал проект, компилирую, пробую запускать ехе , и тут же Аваст орет, что файл заражен руткитом и удаляет его. Я и код немного менял, и компилировал раз 10, ничего не помогает. Я подозреваю, что у Аваста параноя.
Скомпилировал в р-код, Аваст молчит. Но, на всякий случай, будьте осторожны.



Форма кликабельна и таскабельна

Код для формы сгенерирован программой FormCreator.
Миниатюры
Обрезка формы по контуру рисунка  
Вложения
Тип файла: rar ееее.rar (123.2 Кб, 19 просмотров)
3
Заблокирован
06.03.2014, 01:59 7
ща минуточку ... и я что-нибудь скину ...
0
Заблокирован
06.03.2014, 02:03 8
Лучший ответ Сообщение было отмечено как решение

Решение

вот... мой шедевр !
Миниатюры
Обрезка формы по контуру рисунка  
Вложения
Тип файла: rar Invisibility.rar (19.6 Кб, 15 просмотров)
3
Модератор
9725 / 3686 / 871
Регистрация: 22.02.2013
Сообщений: 5,531
Записей в блоге: 78
06.03.2014, 02:06 9
Лучший ответ Сообщение было отмечено как решение

Решение

Вот с поддержкой альфа-канала.
Миниатюры
Обрезка формы по контуру рисунка  
Вложения
Тип файла: rar Russia.rar (243.2 Кб, 23 просмотров)
3
Заблокирован
06.03.2014, 02:51 10
Да уж, в разгар политических событий, и запрет обсуждения
одной из стран ближнего зарубежья, остаётся только Россию и рисовать )

Цитата Сообщение от mazahaker-ncux Посмотреть сообщение
хотя в принципе такая ситуация возникает только в случае если BackColor у Cirle белый, во всех остальных случаях не дырявит красивую(теперь уже) форму. BackColor у меня все равно будет отличаться от белого цвета. еще раз спасибо!
ключевой цвет не обязателно белый ставить, можно любой например фиолетовый
1
06.03.2014, 02:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2014, 02:51
Помогаю со студенческими работами здесь

Растягивание формы. Масштабирование рисунка.
Здравствуйте!!! Я написал код, по которому на форме рисуется куб, мне надо сделать так, чтобы при...

Измерения рисунка как фон формы
Добрый день, решил в БД добавить поздравление при наступлении определенной даты, создал форму, на...

Отрисовка рисунка при загрузке формы
Добрый день, такой вопрос, имеется рисунок. Как сделать так, чтобы он отрисовывать в pictureBox при...

Масштабирование рисунка при разворачивании формы
Я столкнулся с проблемой в C#.Я например, нарисовал пингвина, он находиться в левом углу. Как...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru