Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как передать объект класса TBitmap [D5, WinME, Win2k]


Barmutik ©   (2002-03-19 17:18:00) 

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

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

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

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


Barmutik   (2002-03-21 18:36:00) [1]

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

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

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

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

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


Barmutik   (2002-03-21 11:50:00) [2]

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

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


cdaDmitriy   (2002-03-21 10:38:00) [3]

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

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


Barmutik   (2002-03-21 10:32:00) [4]

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

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

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

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

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


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

2 cdaDMITRIY

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

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

> The From COM texnology

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


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

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


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

Я передаю 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;
{=====================================================}


cdaDmitriy   (2002-03-21 10:10:00) [8]

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


cdaDMITRIY   (2002-03-21 10:09:00) [9]

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


Doom   (2002-03-21 06:53:00) [10]

Попробуй компоненты на этом сайте
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-порта.
Сихронный и асинхронный обмен, события ...


erik   (2002-03-20 20:19:00) [11]

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


erik   (2002-03-20 20:18:00) [12]

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


Dimka Maslov   (2002-03-20 17:39:00) [13]

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


Barmutik   (2002-03-20 12:11:00) [14]

Люди !

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо