Как реализуется нестандартная графика?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Anubis
Обычный пользователь
Обычный пользователь
 
Сообщения: 53
Зарегистрирован: 02.11.2007 (Пт) 10:18

Как реализуется нестандартная графика?

Сообщение Anubis » 09.11.2007 (Пт) 18:22

Как мне реализовать нестандартную графику, мне нужно збацать нестандартные значки закрытия, развёртывания и свёртывания и сам border формы...
Мы родились на этот свет, и ни кто не в праве его выключать!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 09.11.2007 (Пт) 18:48

В двух словах:
1. Получить контекст всего окна (GetWindowDC тебе в помощь)
2. Нарисовать желаемое
3. Освободить контекст окна (ReleaseDC)

З.Ы. Перерисовывать придется постоянно
З.З.Ы. Для получения размеров значков, бродюров и т.п. юзать GetSystemMetrics
Весь мир матрица, а мы в нем потоки байтов!

Anubis
Обычный пользователь
Обычный пользователь
 
Сообщения: 53
Зарегистрирован: 02.11.2007 (Пт) 10:18

Сообщение Anubis » 09.11.2007 (Пт) 19:03

Спасибо! А есть более изящный метод? :?:
Мы родились на этот свет, и ни кто не в праве его выключать!

t116
Бывалый
Бывалый
 
Сообщения: 209
Зарегистрирован: 12.01.2007 (Пт) 12:11

Сообщение t116 » 09.11.2007 (Пт) 19:10

Создать форму без бордюра и нарисовать свой скин

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.11.2007 (Пт) 19:11

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

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 09.11.2007 (Пт) 19:54

Косячно. Ловить WM_NC*** и рисовать на неклиентской области.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.11.2007 (Пт) 23:53

А у меня зато готовый пример есть: http://vbrussian.com/Examples.asp?ID=95
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 10.11.2007 (Сб) 14:12

tyomitch
1) А гиде системное меню?
2) Аццки мерцает при растягивании
3) Реализация не пользовательская, а виндовая, через WindowProc
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.11.2007 (Сб) 18:34

1) его безбордюрной форме неположено. Если отрезать бордюр регионом, можно сделать и сисменю.
2) фикс: AutoRedraw:=True и переименовать Form_Paint в Form_Resize
3) интерфейс пользовательский

Блин, этому коду четыре года, я на него даю ссылку в десятый раз, и только сейчас его начинают критиковать? Странно.
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 10.11.2007 (Сб) 21:29

tyomitch
Просто, когда он делал подобное, я его много критиковал, и теперь он, понимая, каким на самом деле должно быть качество выполнения самописных окон, критикует других :)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, YaCy [Bot], Yandex-бот и гости: 79

    TopList