39 / 27 / 1
Регистрация: 11.01.2011
Сообщений: 113
1

Picture1.Picture

24.03.2011, 18:04. Показов 1726. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как вытащить данные Picture в переменную
А точнее переконвертировать Object.Picture в String а затем обратно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2011, 18:04
Ответы с готовыми решениями:

На строке : 'Picture1.Picture = Clipboard.GetData(vbCFDIB)' выходит ошибка - Out of memory.
Сканер и память ... Мой комп Tb800/128/Matrox Mil.2 8mb На строке : 'Picture1.Picture =...

Можно ли динамически создавать Picture Box внутри другого Picture Box?
Можно ли динамически создавать Picture Box внутри другого Picture Box. Если можно то как? Заранее...

Как сделать Picture1.hDC динамичным?
Privet. podskajitye pojalusta u minya est takoy kod. Private Declare Function SetPixelV Lib...

Как из формы обратиться к Picture1 на UserControl
Создаю контрол. Проект состоит из Form и UserControl. На самом UserControlе расположен Picture1,...

2
751 / 550 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
25.03.2011, 09:51 2
Цитата Сообщение от Grigoriy251 Посмотреть сообщение
А точнее переконвертировать Object.Picture в String а затем обратно?
Код не мой. Работает отлично. Надеюсь то что надо.

1) читает побайтово файл и конвертирует в строку в Base64, которую затем пишет в текстовый файл.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
InputBinaryFile = "C:\Temp\test.jpg" 
OutPutTextFile = "C:\Temp\test2.txt" 
textBase64="" 
 
call BinaryFile_to_Base64String 
call Base64_to_TextFile 
 
sub BinaryFile_to_Base64String 
Set objStream = CreateObject("ADODB.Stream") 
objStream.Type = 1 ' TypeBinary 
objStream.Open() 
objStream.LoadFromFile(InputBinaryFile) 
readBytes = objStream.Read() 
Set objXML = CreateObject("MSXml2.DOMDocument") 
objXML.loadXML "<Base64Data />" 
Set objDocElem = objXML.documentElement 
objDocElem.dataType = "bin.base64" 
objDocElem.nodeTypedValue = readBytes 
textBase64 = objDocElem.text 
end sub 
 
sub Base64_to_TextFile 
Set objStream = CreateObject("ADODB.Stream") 
objStream.Type = 2 ' TypeText 
objStream.Open() 
objStream.writetext textBase64 
objStream.SaveToFile OutPutTextFile,2 
end sub
2) читает созданный ранее текстовик и конвертирует в исходный вид в новый файл
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
InputTextFile = "C:\Temp\test2.txt" 
OutPutBinaryFile = "C:\Temp\test2.jpg" 
textBase64="" 
 
call TextFileBase64_to_Base64string 
call textBase64_to_BinaryFile 
 
sub TextFileBase64_to_Base64string 
Set objStream = CreateObject("ADODB.Stream") 
objStream.Type = 2 ' TypeText 
objStream.Open() 
objStream.LoadFromFile(InputTextFile) 
textBase64 = objStream.ReadText() 
end sub 
 
Sub textBase64_to_BinaryFile 
Set objXML = CreateObject("MSXml2.DOMDocument") 
Set objDocElem = objXML.createElement("tmp") 
objDocElem.DataType = "bin.base64" 
objDocElem.text = textBase64 
writeBytes = objDocElem.NodeTypedValue 
Set objStream = CreateObject("ADODB.Stream") 
objStream.Type = 1 ' TypeBinary 
objStream.Open() 
objStream.Write writeBytes 
objStream.SaveToFile OutPutBinaryFile, 2 
end sub
Переделай под себя код. Думаю труда не составит.
1
39 / 27 / 1
Регистрация: 11.01.2011
Сообщений: 113
25.03.2011, 21:59  [ТС] 3
Не мне не совсем это нужно было
Мне нужно было не файл конвертировать а сам объект Picture
Вот что помогло выдергивание данных из Picture в массив

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Type BITMAP
    bmType As Long
    bmWidth As Long
    bmHeight As Long
    bmWidthBytes As Long
    bmPlanes As Integer
    bmBitsPixel As Integer
    bmBits As Long
End Type
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
Dim PicBits() As Byte, PicInfo As BITMAP
Dim Cnt As Long, BytesPerLine As Long
Private Sub Command1_Click()
       'Get information (such as height and width) about the picturebox
    GetObject Picture1, Len(PicInfo), PicInfo
    'reallocate storage space
    BytesPerLine = (PicInfo.bmWidth * 3 + 3) And &HFFFFFFFC
    ReDim PicBits(1 To BytesPerLine * PicInfo.bmHeight * 3) As Byte
    'Copy the bitmapbits to the array
    GetBitmapBits Picture1.Image, UBound(PicBits), PicBits(1)
    SetBitmapBits Picture2.Image, UBound(PicBits), PicBits(1)
  
End Sub
0
25.03.2011, 21:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2011, 21:59
Помогаю со студенческими работами здесь

Как полученные данные в Picture1 скопировать в text1 в другой форме?
как полученные данные в Picture1 (находится в form2) скопировать в text1 (находится в form4)...

Picture
как сделать чтобы при нажатии кнопки(KeyPress) картинка сдвигалась влево?

Геометрия в Picture
задача задано круг (радис, координаты центра (x,y) есть) нарисован n-угольник (координаты вершин...

Combobox и Picture
Помогите пожалуйста у меня такая проблема. не могу связать значения из ComboBox.List с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru