Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.17;
Скачать: CL | DM;

Вниз

Как передать объект класса TBitmap   Найти похожие ветки 

 
Barmutik ©   (2002-03-19 17:18) [0]

Встала необходимость передать изображение через COM.

Т.е. при вызове функции необходимо получить с удалённого компьютера данное изображение. Подскажите в каком формате его передавать??

Очень бы не помешал пример(кусочек кода).

И заодно скажите где почитать.


 
Barmutik ©   (2002-03-20 12:11) [1]

Люди !

Неужели никто не знает ?

Подскажите где почитать !
Там есть IPicture и IStdPicture .. Может это то что нужно ?
Где можно прочитать про это ?


 
Dimka Maslov ©   (2002-03-20 17:39) [2]

Можно прочитать файл в буфер, а потом по кускам передавать.


 
erik ©   (2002-03-20 20:18) [3]

А на фига это надо? Наверника опять изврат. Но сделать несложно. Береш любой компонент лучше хороший(VARIAN ASYNC32) уменя есть. И передаеш по протоколу ZModem. У них подержка есть для этого. Или сам сделай сначала 4 байта длина файла изображени после пихай в буфер кусками и так до конца файла. Надеюсь, что такое TStream знаеш.


 
erik ©   (2002-03-20 20:19) [4]

А может ты имел ввиду com сервер?! Тогда это в другой ветке.


 
Doom ©   (2002-03-21 06:53) [5]

Попробуй компоненты на этом сайте
DirectPort v3.0 SFlash2000

Компонент прямого доступа к портам (только D6)
Полная совместимость с WinNT, Win2000, WinXP

и
// TComPort component ver. 2.00 for Delphi 2-6, Win9x, NT
// written by Dejan Crnila, 1998 - 1999
// email: dejancrn@yahoo.com
Адаптированный под D6 компонент для COM-порта.
Сихронный и асинхронный обмен, события ...



 
cdaDMITRIY ©   (2002-03-21 10:09) [6]

COM-порта ??? or COM texnology ???


 
cdaDmitriy ©   (2002-03-21 10:10) [7]

Там есть IPicture и IStdPicture .. The From COM texnology


 
Бармалей   (2002-03-21 10:26) [8]

Я передаю Bitmap в виде OleVariant. Делаю так:


{=====================================================}
function SaveBitmapToVariant(Bitmap: TBitmap): OleVariant;
// Сохранение изображения из TBitmap в OleVariant
var
Stream: TMemoryStream;
Buffer: OleVariant;
PBuffer: pointer;
begin
Result:=varEmpty;
Stream:=TMemoryStream.Create;
Bitmap.SaveToStream(Stream);

Buffer:=VarArrayCreate([0,Stream.Size-1],VarByte);
PBuffer:=VarArrayLock(Buffer);
try
Stream.Position:=0;
Stream.Read(PBuffer^,Stream.Size);
finally
VarArrayUnlock(Buffer);
Stream.Free;
end;

Result:=Buffer;
end;
{=====================================================}

{=====================================================}
procedure LoadBitmapFromVariant(Bitmap: TBitmap; Buffer: OleVariant);
// Загрузка изображения в TBitmap из OleVariant
var
Stream: TMemoryStream;
PBuffer: pointer;
begin
if not VarIsArray(Buffer) then Exit;

Stream:=TMemoryStream.Create;
PBuffer:=VarArrayLock(Buffer);
try
Stream.Write(PBuffer^,(VarArrayHighBound(Buffer,1)-VarArrayLowBound(Buffer,1)+1));
finally
VarArrayUnlock(Buffer);
end;

Stream.Position:=0;
Bitmap.LoadFromStream(Stream);
Stream.Free;
end;
{=====================================================}



 
RedWood   (2002-03-21 10:28) [9]

Всем привет !
может как вариантовский массив попробовать ?
работать точно будет, но наверное есть способы попроще.
что скажет all ?


 
Doom ©   (2002-03-21 10:30) [10]

2 cdaDMITRIY

> COM-порта ??? or COM texnology ???

Это ко мне вопрос?

> The From COM texnology

Что вы хотели этим сказать?


 
Barmutik ©   (2002-03-21 10:32) [11]

Я имел ввиду передачу изображения с одного комппьютера на
другой от COM-сервера на одном компьютере к COM-клиенту на
другом.

COM в смысле Common Object Model а не COM-порт.

Если не в этой ветке то в какую мне идти ?
Это по-моему имеет прямое отношение к слову "Система".

То erik :
>А на фига это надо? Наверника опять изврат.

Ответ на вопрос на фига это надо я не спрашивал.
А насчёт изврата это как уж для кого.


 
cdaDmitriy ©   (2002-03-21 10:38) [12]

решение с IPicture и IStdPicture .. у меня не получилось
ЕСЛИ КТО ЗНАЕТ РАСКАЖИТЕ

у меня ВАРИАНТ КАК У
"Бармалей (21.03.02 10:26) Я передаю Bitmap в виде OleVariant"



 
Barmutik ©   (2002-03-21 11:50) [13]

Огромное спасибо Бармалей !

Если кто знает насчёт IPiture и IStdPicture то тоже
будет интеерсно узнать.


 
Barmutik ©   (2002-03-21 18:36) [14]

Попробовал способ Бармалея. Всё работает супер !

Только одно но.. если я отправляю картинку более чем 100 на 100
пикселов .. для примера 110 на 110 то появляется некоторый тормоз у мышки. Т.е в тот самый момент когда происходит отправка мышка как бы немного замирает и потом всё нормально.
Особеено заметно если в этот момент ведёш мышью по экрану.

Может это связано с размером буфера ?

Может есть совет как это побороть ??

Помеха в принципе не большая но всё таки....



Страницы: 1 вся ветка

Текущий архив: 2002.06.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
1-55148
Poaokristal
2002-06-04 13:03
2002.06.17
Об использовании .obj файлов в Delphi.


7-55325
L.eXX
2002-03-20 19:20
2002.06.17
Как извлечь писк из динамика?


3-54996
oss
2002-05-23 09:58
2002.06.17
Уважаемые, посмотрите этот запрос (mssql)


1-55128
Lefan
2002-06-04 08:49
2002.06.17
Хочу запуск с параметрами...


14-55300
limon
2002-05-16 11:13
2002.06.17
Еще одна задачка :) Новые глюки Мелкософта