Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> картинка из буфера обмена 
:(
    Опции темы
klyaksa
Дата 13.9.2011, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 15.9.2005

Репутация: нет
Всего: нет



Код

if not (Clipboard.HasFormat(CF_BITMAP) or  Clipboard.HasFormat(CF_METAFILEPICT) or  Clipboard.HasFormat(CF_PICTURE))
then  begin

  Picture := TPicture.Create;
  try
      Picture.Assign(Clipboard);
      if assigned(Picture.Graphic) then
      Picture.SaveToFile('Имя файла'+'???расширение???');
  finally
    Picture.Free;
  end;
end;


Как узнать что за картинка в буфере, чтобы расширение задать?
PM MAIL   Вверх
klyaksa
Дата 13.9.2011, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 15.9.2005

Репутация: нет
Всего: нет



GrExt :=  GraphicExtension(TGraphicClass(Picture.Graphic.ClassType)) почему-то возвращает bmp, хотя копирую в буфер Png.
PM MAIL   Вверх
MetalFan
Дата 14.9.2011, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(klyaksa @  13.9.2011,  19:48 Найти цитируемый пост)
почему-то возвращает bmp, хотя копирую в буфер Png

Предположу, что нет такого формата данных буфера, как PNG. Поэтому и копируется из буфера bmp.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Snowy
Дата 14.9.2011, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Обычно, при копировании картинки в буфер, копируется также BMP вариант картинки, либо только BMP.
Зависит от программы, которая помещала рисунок в буфер.
PM MAIL   Вверх
klyaksa
Дата 14.9.2011, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 187
Регистрация: 15.9.2005

Репутация: нет
Всего: нет



Вопрос меняется: копируется в буфер обмена картинка PNG (хотя может быть и другой формат). Как получить из буфера изображение как было, а не в bmp.
PM MAIL   Вверх
Snowy
Дата 14.9.2011, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Код
procedure TForm1.Button1Click(Sender: TObject);
var
  buf: array[0..60] of Char;
  n: Integer;
  fmt: Word;
  name: string[30];
begin
  Memo1.Clear;
  for n := 0 to Clipboard.FormatCount - 1 do
  begin
    fmt := Clipboard.Formats[n];
    if GetclipboardFormatName(fmt, buf, Pred(Sizeof(buf))) <> 0 then
      Memo1.Lines.Add(StrPas(buf))
    else
    begin
      case fmt of
        1: name := 'CF_TEXT';
        2: name := 'CF_BITMAP';
        3: name := 'CF_METAFILEPICT';
        4: name := 'CF_SYLK';
        5: name := 'CF_DIF';
        6: name := 'CF_TIFF';
        7: name := 'CF_OEMTEXT';
        8: name := 'CF_DIB';
        9: name := 'CF_PALETTE';
        10: name := 'CF_PENDATA';
        11: name := 'CF_RIFF';
        12: name := 'CF_WAVE';
        13: name := 'CF_UNICODETEXT';
        14: name := 'CF_ENHMETAFILE';
        15: name := 'CF_HDROP (Win 95)';
        16: name := 'CF_LOCALE (Win 95)';
        17: name := 'CF_MAX (Win 95)';
        $0080: name := 'CF_OWNERDISPLAY';
        $0081: name := 'CF_DSPTEXT';
        $0082: name := 'CF_DSPBITMAP';
        $0083: name := 'CF_DSPMETAFILEPICT';
        $008E: name := 'CF_DSPENHMETAFILE';
        $0200..$02FF: name := 'частный формат';
        $0300..$03FF: name := 'Объект GDI';
      else
        name := IntToHex(fmt, 4);
      end;
      Memo1.Lines.Add(name);
    end;
  end;
end;

Этот код показывает, какие форматы у тебя в буфере.
Вряд ли там найдётся PNG... Скорее BMP и DIB.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.