Страница: 1 |
Вопрос: КАК КУСОЧЕК ИЗОБРАЖЕНИЯ В IMAGE ПЕРЕРИСОВАТЬ... | Добавлено: 30.07.05 19:57 |
Автор вопроса: ![]() |
КАК КУСОЧЕК (определённую область) ИЗОБРАЖЕНИЯ В IMAGE ПЕРЕРИСОВАТЬ НА ФОРУМУ!!!
почитать API не предлагать - читал, все функции требуют в качестве параметра hdc, которого к Image НЕТУ ! |
Ответы | Всего ответов: 5 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 224 Ответов: 3777 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 30.07.05 20:08 |
Да у неё даже и HWND то нету. значит это вообще не окно. а значит оно просто описывает как надо рисовать изображение. А рисовать оно его будет нигде больше как на ФОРМЕ! (или там в чём он у тебя лежит) вот тот HDC брать и надо. Только надо учесть смещенние изображения. И сместиться оно (а пикселах) на Left/Top соответственно. Вот типа вот этого:
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long 'image size Const iw As Long = 40 Const ih As Long = 40 Dim l As Long Dim t As Long Dim h As Long 'hDC Private Sub Command1_Click() Me.ScaleMode = 3 'pixel l = Image1.Left t = Image1.Top BitBlt Picture1.hDC, 0, 0, iw, ih, Me.hDC, l, t, vbSrcCopy End Sub |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #2 | Добавлено: 30.07.05 20:14 |
хм... а ну щас затестим
|
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #3 | Добавлено: 30.07.05 20:20 |
а не пашет !
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Private Sub Form_Load() 'image size Dim iw As Long Dim ih As Long Dim l As Long Dim t As Long Dim h As Long 'hDC Me.ScaleMode = 3 'pixel ih = Image1.Height iw = Image1.Width l = Image1.Left t = Image1.Top BitBlt Picture1.hDC, 0, 0, iw, ih, Me.hDC, l, t, vbSrcCopy End Sub в Picture1 какой-то левый кусок картинки с экрана попадает, короче попадает не то что мне нужно |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 224 Ответов: 3777 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 30.07.05 20:48 |
Имхо эта простая ошибка графики. В батоне всё ок.
А если вот так попробывать: у меня работает на ура: Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Private Sub Form_Load() 'image size Dim iw As Long Dim ih As Long Dim l As Long Dim t As Long Picture1.AutoRedraw = True '!! Show '!! Me.Refresh ' !!! Me.ScaleMode = 3 'pixel ih = Image1.Height iw = Image1.Width l = Image1.Left t = Image1.Top BitBlt Picture1.hDC, 0, 0, iw, ih, Me.hDC, l, t, vbSrcCopy Picture1.Refresh '!!! End Sub |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #5 | Добавлено: 31.07.05 23:29 |
О! Имхо работает! Спасибо Morpheus!!! |
Страница: 1 |
|