Консультация № 26546
18.09.2005, 20:45
0.00 руб.
0 4 3
Уважаемые эксперты, вопрос состоит в том как скопировать из буфера обмена рисунок в формате jpg в компонент Image. Я чего-то пытался сделать, Bitmap копирует, а вот jpeg -пишет неподдерживаемый формат, вроде как-то можно регить новые форматы, но я с этим не разобрался. Заранее благодарен.

Приложение:
Image1.Picture.RegisterClipboardFormat(100,TJpegImage);Image1.Picture.Graphic.Assign(Clipboard);//так только для Bmp

Обсуждение

Неизвестный
18.09.2005, 21:55
общий
это ответ
Здравствуйте, Master135!
а вот у меня работет и даже независимо от того копирую я внутри своей программы либо из другой вставляю.
в uses также стоят 2 модуля jpeg и clipbrd
твоя ошибка в том что ты через Graphic вставлаешь а он поддерживает только bitmap. А так все правильно смотри приложение доступно понятно там где ты пишешь 100 я поставил 0 и разницы никакой

Приложение:
procedure TForm1.Button1Click(Sender: TObject);begin Clipboard.Assign(Image2.Picture); Image1.Picture.RegisterClipboardFormat(0, TJpegImage); Image1.Picture.Assign(Clipboard);end;procedure TForm1.FormCreate(Sender: TObject);begin Image2.Picture.LoadFromFile(‘d:\test.jpg‘);end;
Неизвестный
19.09.2005, 01:07
общий
это ответ
Здравствуйте, Master135!
Предлагаю вашу проблему решать так:
1. Получить адрес изображения из буфера
2. Загрузить это изображение в Image из файла

Возможно, это не совсем то, что Вы хотели, но зато работает. Правда, было бы очень неплохо проверять расширение файла из буфера, но это уже по вашему усмотрению!
Надеюсь помог.


Приложение:
uses Clipbrd, ShellAPI, Jpeg;procedure TForm1.Button1Click(Sender: TObject);var buffer: array [0..MAX_PATH] of Char;begin if not Clipboard.HasFormat(CF_HDROP) then Exit; Clipboard.Open; try begin DragQueryFile(Clipboard.GetAsHandle(CF_HDROP), 0, buffer, SizeOf(buffer)); Image1.Picture.LoadFromFile(buffer); end; finally Clipboard.Close; end;end;
давно
Мастер-Эксперт
425
4118
19.09.2005, 05:27
общий
это ответ
Здравствуйте, Master135!
Нужно в строку USES включить модуль JPEG - это специальный модуль для разборок с картинками этого формата.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
19.09.2005, 20:47
общий
Силантьев Евгений Александрович копирую рисунок в буфер потом построчно выполняю -> if not Clipboard.HasFormat(CF_HDROP) then Exit; на этой строке считает что буфер не этого формата и выходит. Пробовал убить not результата тоже не принесло.Сейчас пытаюсь примерно так//Image1.Picture.RegisterClipboardFormat(CF_HDROP,TJpegImage); //Image1.Picture.Graphic.LoadFromClipboardFormat(CF_HDROP,Clipboard.GetAsHandle(CF_HDROP), Image1.Picture.Graphic.Palette);ниче не выходит
Форма ответа