делаю часы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1-6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.

Модератор: gaidar

mayhem
Новичок
Новичок
Аватара пользователя
 
Сообщения: 49
Зарегистрирован: 26.07.2004 (Пн) 14:02
Откуда: kiev

делаю часы

Сообщение mayhem » 24.09.2007 (Пн) 17:06

давно не брался за это. подскажите где лага.

[syntax="vb"]
Dim region As RECT
With region
.Top = 0
.Left = 0
.Right = Me.Width / Screen.TwipsPerPixelX - 2
.Bottom = Me.Height / Screen.TwipsPerPixelY - 2
End With

buff = GetDC(Me.hwnd)
cbuff = CreateCompatibleDC(buff)

SetTextColor cbuff, RGB(255, 150, 0)
hBrush& = CreateSolidBrush(RGB(0, 0, 0))
SelectObject cbuff, hBrush

rez& = Rectangle(cbuff, region.Left, region.Top, region.Right, region.Bottom)
rez& = DrawText(cbuff, Time, 8, region, DT_CENTER + DT_SINGLELINE + DT_VCENTER + DT_NOCLIP)

rez& = BitBlt(cbuff, region.Left, region.Top, region.Right, region.Bottom, cbuff, 0, 0, SRCCOPY)

ReleaseDC Me.hwnd, cbuff
ReleaseDC Me.hwnd, cbuff
DeleteObject hBrush
[/syntax]

это все должно отрисовать часы по центру на черном фоне. если писать сразу в buff, все работает но с мерцанием, вспомнил про bitblt но она не хочет перерисовівать форму, нотя возвращает 1.

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

Сообщение tyomitch » 24.09.2007 (Пн) 21:07

Ты перерисовываешь свою картинку из cbuff в cbuff.
Сомневаюсь, что это то, что тебе нужно.
Изображение

mayhem
Новичок
Новичок
Аватара пользователя
 
Сообщения: 49
Зарегистрирован: 26.07.2004 (Пн) 14:02
Откуда: kiev

Сообщение mayhem » 25.09.2007 (Вт) 16:24

упс. но дело тоже не в этом. это просто опечатка

перерисовываю из сbuff в buff

[syntax="vb"]rez& = BitBlt(buff, region.Left, region.Top, region.Right, region.Bottom, cbuff, 0, 0, SRCCOPY)[/syntax]

mayhem
Новичок
Новичок
Аватара пользователя
 
Сообщения: 49
Зарегистрирован: 26.07.2004 (Пн) 14:02
Откуда: kiev

Сообщение mayhem » 25.09.2007 (Вт) 20:46

порешал проблему через createCompatibleBitmap

но теперь все Ч/Б. Есть идеи?

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 213
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 27.09.2007 (Чт) 0:06

To create a color bitmap, use the hDC that was used to create the memory device context, as shown in the following code:

HDC memDC = CreateCompatibleDC ( hDC );
HBITMAP memBM = CreateCompatibleBitmap ( hDC );
SelectObject ( memDC, memBM );

mayhem
Новичок
Новичок
Аватара пользователя
 
Сообщения: 49
Зарегистрирован: 26.07.2004 (Пн) 14:02
Откуда: kiev

Сообщение mayhem » 27.09.2007 (Чт) 13:02

спасибо за совет, но я уже добрался таки до мсдн и часики мои уже разноцветные.

brodyga
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 29.09.2009 (Вт) 9:52

Re: делаю часы

Сообщение brodyga » 31.07.2010 (Сб) 17:10

А можно еще раз озвучить решение, а то я не могу разобраться. У меня в итоге все равно получается черно-белое изображение, а должно быть цветным.

Код: Выделить всё
'Загружаю фоновый рисунок
Picture1.Picture = LoadPicture(App.Path & "\" & BACKGRNDFILE)
'Создаю hDC
lngDC = CreateCompatibleDC(Picture1.hDC)
'Создаю Bitmap
lngBMP = CreateCompatibleBitmap(lngDC, lngWidthPixels, lngHeightPixels)
'Выбираю объект
SelectObject lngDC, lngBMP
'<Тут вызывается подпрограмма, которая на Picture1 отрисовывает необходимое изображение>
'Копирую отрисованное в Picture1 изображение в свой битмап
BitBlt lngDC, x, y, lngWidthPixels, lngHeightPixels, Picture1.hDC, 0, 0,


Когда я сохраняю картинку из lngDC, то она оказывается чернобелой

Можете

iGrok
Профессор VB наук
Профессор VB наук
 
Сообщения: 2906
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: делаю часы

Сообщение iGrok » 31.07.2010 (Сб) 20:41

brodyga писал(а):А можно еще раз озвучить решение, а то я не могу разобраться. У меня в итоге все равно получается черно-белое изображение, а должно быть цветным.


Ну чуть выше же написано, в чём дело. И отсылка к мсдн с подробным объяснением, почему именно так.

Note: When a memory device context is created, it initially has a 1-by-1 monochrome bitmap selected into it. If this memory device context is used in CreateCompatibleBitmap, the bitmap that is created is a monochrome bitmap.


Т.е. надо так: lngBMP = CreateCompatibleBitmap(Picture1.hDC, lngWidthPixels, lngHeightPixels).
label:
cli
jmp label


Вернуться в VisualBasic 1-6

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

Сейчас этот форум просматривают: Google-бот, Joo и гости: 2

    TopList