Страница: 1 | 2 |
Как вертеть картинку на определённый угол (нужно для игры), а также как сделать какой нибудь цвет прозрачным. Очень надо. Заранее спасибо
Значит так. Кидаешь на форму PictureBox с именем picRot и 2 чекбокса с именами chkRotMask и chkRotSmooth. Первый сглаживает рисунок, второй убирает траспарент-фон. Если код не пойдёт то дам исходник своей игрушки подобного рода, но у меня там заминка вышла - не знаю как осуществлять движение по углу. Private Declare Function FoxBrightness Lib "FoxCBmp.dll" (ByVal DstDC As Long, ByVal DstBmp As Long, ByVal SrcDC As Long, ByVal SrcBmp As Long, ByVal TransColor As Long, ByVal Brightness As Long, ByVal Flags As Long) As Long Private Declare Function FoxBlendIn Lib "FoxCBmp.dll" (ByVal DstDC As Long, ByVal DstX As Long, ByVal DstY As Long, ByVal SrcDC As Long, ByVal SrcBmp As Long, ByVal TransColor As Long, ByVal Alpha As Byte, ByVal Flags As Long) As Long Private Declare Function FoxRotate Lib "FoxCBmp.dll" (ByVal DstDC As Long, ByVal DstX As Long, ByVal DstY As Long, ByVal SrcDC As Long, ByVal SrcBmp As Long, ByVal TransColor As Long, ByVal Alpha As Double, ByVal Flags As Long) As Long Private Declare Function GetTickCount Lib "kernel32" () As Long Dim CurX As Long, CurY As Long Dim OldTime As Long Dim rotates As Integer Private Sub chkRotMask_Click() HScroll End Sub Private Sub chkRotSmooth_Click() HScroll End Sub Private Sub Form_KeyPress(KeyAscii As Integer) Select Case (KeyAscii) Case 52 rotates = rotates - 2 Case 54 rotates = rotates + 2 End Select '52 и 54 - цифры 4 и 6 на нампаде End sub Private Sub Form_Load() HScroll End Sub Public Sub HScroll() Me.Cls OldTime = GetTickCount FoxRotate Form1.hDC, 200, 200, picRot.hDC, picRot.Image.Handle, &H8000000F, rotates, chkRotMask + chkRotSmooth * 2 Caption = GetTickCount - OldTime Me.Refresh End Sub Всё бы ничего, но что это за библиотека foxcbmp.dll Если у кого есть ета foxcbmp.dll скинте пжлта на cooller@hotmail.ru. Буду рад. А на Яндексе поискать слабо? Тот первым делом выводит ссылку http://www.vbnet.ru/activex/activexdownload.asp?id=55 Там лежит архив с контролом, к которому прилагается эта DLL смотри мою тему "Вертушка" - тот же самый вопрос. А воопще, если пишешь под XP или 2000 то лучше юзай PlgBlt - выигрыш во времени огромен, тк тебе надо просто тупо через синус прямоугольник вертеть. А вообще, АДМИНЫ!!! Надо бы факи создать... А чё делать если допусим надо вертеть не картинку, а допустим Textbox или CommandButton ??? Возможно ли это решить в VB Насчёт вертелки рисунков...Foxcbmp вещь хорошая только тормознутая немного... Может проще будет функцию написать для поворота...А?...А чё любую точку картинки можно найти с помощью Point надо только повернуть её на определённое кол-во градусов относительно Pic.left=0:Pic.top=0 Если надо вертеть textbox или button, тебе придется их самому рисовать, как минимум. Как максимум - писать свой контрол Cooler! У меня есть компонент который вертит Label. Вот пример кода, вращающего картинку на определённый угол. Нужно: два пикчербокса и одно текстовое поле, кнопка. -------------КОД--------------- Const Pi = 3.14159 Private Sub Command1_Click() Picture2.Cls For x = 1 To Picture1.ScaleWidth For y = 1 To Picture1.ScaleHeight R = Sqr(x ^ 2 + y ^ 2) Angle = Atn(y / x) New_Angle = Angle + (Text1.Text * Pi / 180) New_x = R * Cos(New_Angle) new_y = R * Sin(New_Angle) Picture2.PSet (Picture2.ScaleWidth / 2 + New_x, Picture2.ScaleHeight / 2 + new_y), Picture1.Point(x, y) Next y Next x End Sub Private Sub Form_Load() Text1.Text = 0 Command1.Value = True End Sub ------------Конец----------------- Недостатки: у меня очень медленно работает... а я сделал вращающийся куб (правда с небольшими глюками) с картинками на сторонах. и все это без директов а простой PlgBlt и идёт без тормоза. (алгоритм врашения правда мне помогли здорово напсать) Вот что получилось из PlgBlt. Если кто это доработает, пишите. Попробуйте подставлять xx в разных P Сделайтн 2 пикча. В первый киньте какую-нибудь иконку. Ещё нужон таймер. Експериментируйте!!! Option Explicit Private Declare Function PlgBlt Lib "gdi32" (ByVal hdcDest As Long, lpPoint As POINTAPI, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long) As Long Private Type POINTAPI x As Long y As Long End Type Dim xx, yy Private Sub Timer1_Timer() Dim Pt(0 To 2) As POINTAPI xx = xx + 1 Pt(0).x = 30 Pt(0).y = 10 Pt(1).x = 300 Pt(1).y = xx Pt(2).x = 0 Pt(2).y = 300 PlgBlt Picture2.hDC, Pt(0), Picture1.hDC, 0, 0, 300, 300, ByVal 0&, ByVal 0&, ByVal 0& End Sub to Morpheus : скинь код пожлт, очень интересно посмотреть to Ra$cal : тоже если не в лом скинь LABEL А вообще без контролов не как нельзя??? Ведь контролы они тоже на VB пишутся 2 Cooler: Проверь почту. Если чё не пашет, пиши, помогу.
Вопрос: Как вертеть картинку??????????
Добавлено: 11.12.03 11:40
Автор вопроса: Ra$cal | Web-сайт:
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
Crusty
Вопросов: 3
Ответов: 6
Профиль | | #1
Добавлено: 11.12.03 14:05
Номер ответа: 2
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #2
Добавлено: 11.12.03 20:16
Номер ответа: 3
Автор ответа:
Cooller
Вопросов: 10
Ответов: 28
Профиль | | #3
Добавлено: 21.12.03 03:25
Номер ответа: 4
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #4
Добавлено: 21.12.03 03:54
Номер ответа: 5
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #5
Добавлено: 21.12.03 05:49
Номер ответа: 6
Автор ответа:
Cooller
Вопросов: 10
Ответов: 28
Профиль | | #6
Добавлено: 23.12.03 01:42
Номер ответа: 7
Автор ответа:
Cooller
Вопросов: 10
Ответов: 28
Профиль | | #7
Добавлено: 23.12.03 01:53
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #8
Добавлено: 23.12.03 05:58
Номер ответа: 9
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #9
Добавлено: 23.12.03 12:05
Номер ответа: 10
Автор ответа:
StrikeR
ICQ: 151819
Вопросов: 32
Ответов: 110
Web-сайт:
Профиль | | #10
Добавлено: 23.12.03 14:07
2 Crusty: che-to tvooi primer ne pashet
Номер ответа: 11
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #11
Добавлено: 23.12.03 21:58
Номер ответа: 12
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #12
Добавлено: 24.12.03 10:59
Номер ответа: 13
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #13
Добавлено: 25.12.03 12:22
Номер ответа: 14
Автор ответа:
Cooller
Вопросов: 10
Ответов: 28
Профиль | | #14
Добавлено: 25.12.03 12:40
Номер ответа: 15
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #15
Добавлено: 25.12.03 13:45