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

-
-
- Сообщения: 17
- Зарегистрирован: 04.02.2007 (Вс) 19:19
-
Sofist » 04.02.2007 (Вс) 19:31
Сталкнулся с такой задачей: необходимо картинку из PictureBox перегнать в массив. Пробывал это сделать так:
1. запрашивал цвет пикселя через PictureBox.Point(i,j)
2. загонял полученное значение в массив.
Но проблема в том, что картинку 320х240 такой алгоритм долго обрабатыват.
Подскажите как ускорить этот процесс? и есть ли API функция для решения этой задачи?
Заранее спасибо!!
-
Kolobuk
-
- Обычный пользователь

-
-
- Сообщения: 61
- Зарегистрирован: 24.10.2006 (Вт) 20:03
Kolobuk » 04.02.2007 (Вс) 19:50
С картинками мало работал, но файл в массив загоняется просто:
- Код: Выделить всё
Open "C:\Kuku.exe" For Binary As #1 Len = 1
Dim MAS() As Byte
ReDim MAS(LOF(1)) As Byte
Get #1, 1, MAS
Close #1
-
tyomitch
-
- Пользователь #1352

-

-
- Сообщения: 12822
- Зарегистрирован: 20.10.2002 (Вс) 17:02
- Откуда: חיפה
tyomitch » 04.02.2007 (Вс) 20:15
Sofist писал(а):Подскажите как ускорить этот процесс? и есть ли API функция для решения этой задачи?
GetDIBits
-
BV
-
- Thinker

-

-
- Сообщения: 3987
- Зарегистрирован: 12.09.2004 (Вс) 0:55
- Откуда: Молдавия, г. Кишинёв
-
BV » 04.02.2007 (Вс) 20:21
GetDIBits
[edit]
Что интересно - ответил я раньше Темыча, а пост отправился на 6 минут позже... более того, форму "Просмотреть сообщение" я так и не увидел, после нажатия кнопки "Отправить" форум завис.
[/edit]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
-
Andrey Fedorov
-
- Член-корреспондент академии VBStreets

-
-
- Сообщения: 3287
- Зарегистрирован: 21.05.2004 (Пт) 9:28
- Откуда: Москва
Andrey Fedorov » 05.02.2007 (Пн) 0:23
tyomitch писал(а):Sofist писал(а):Подскажите как ускорить этот процесс? и есть ли API функция для решения этой задачи?
GetDIBits
Э-э-э-х... А я так ждал ответа про твою оболочку...

Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...
-
SyncM
-
- Новичок

-

-
- Сообщения: 32
- Зарегистрирован: 04.02.2007 (Вс) 15:48
SyncM » 05.02.2007 (Пн) 1:31
Попробуй вот так
- Код: Выделить всё
Public Pica() As Long
ReDim Pica(pic.ScaleWidth, pic.ScaleHeight)
For Xa = 0 To pic.ScaleWidth
For Ya = 0 To pic.ScaleHeight
Pica(Xa, Ya) = pic.Point(Xa, Ya)
Next
Next
-
EUGY
-
- Бывалый

-

-
- Сообщения: 214
- Зарегистрирован: 09.11.2006 (Чт) 22:51
- Откуда: Мурманск
EUGY » 05.02.2007 (Пн) 10:44
- Код: Выделить всё
Option Explicit
Private Type BITMAPINFOHEADER '40 bytes
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
End Type
'---------------------------------------------------
Private Type BITMAPINFO
bmiHeader As BITMAPINFOHEADER
bmiColors As String * 1024
End Type
Private Declare Function GetDIBits Lib "gdi32" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
Private Sub Command1_Click()
PushPictureInBite Picture1
End Sub
Private Sub PushPictureInBite(pic As PictureBox)
Dim bt() As Byte 'streem
Dim bim As BITMAPINFO
bim.bmiHeader.biSize = 40
If pic.Picture.Type <> 1 Then
MsgBox "Ãðàíàòû íå òîé ñèñòåìû"
Exit Sub
End If
Call GetDIBits(pic.hdc, pic.Picture.Handle, 0, 0, ByVal 0, bim, ByVal 0)
ReDim bt(bim.bmiHeader.biSizeImage - 1)
Call GetDIBits(pic.hdc, pic.Picture.Handle, 0, bim.bmiHeader.biHeight, ByVal VarPtr(bt(0)), bim, ByVal 0)
' RGB (0)
'bt(0) -
'bt(1) -
'bt(2) -
' RGB (1)
'bt(3) -
'bt(4) -
'bt(5) -
'...
End Sub
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot, Yandex-бот и гости: 1