Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2012, 22:03   #1
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию Сохранить изображение компонента в файл, даже если он частично не виден.

Здравствуйте. Мне надо сохранить изображение компонента в файл. Делаю так:
Код:
var BMP : Graphics.TBitmap;
begin
  if not SaveDialog1.Execute then exit;
  BMP := Graphics.TBitmap.Create;
  BMP.Width:=Lenta.Width;
  BMP.Height:=Lenta.Height;
  BMP.Canvas.CopyRect(Rect(0,0,Lenta.Width,Lenta.Height),Lenta.Canvas,Rect(0,0,Lenta.Width,Lenta.Height));

  BMP.SaveToFile(SaveDialog1.FileName);
  BMP.Free;
end;
При таком коде, если компонент частично перекрыт, то сохраняется отображение того, что находится поверх его. Можно ли сохранить именно то, что отрисовано в компоненте?
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума Ответить с цитированием
Старый 26.07.2012, 22:28   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

А зачем так делать если не секрет?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 26.07.2012, 22:30   #3
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Не уверен что сработает но все же:
Код:
var
h:Thandle;
rect:Trect;
begin
 if not SaveDialog1.Execute then exit;
h:=lenta.handle;
getwindowrect(h,rect);
with TBitmap.Create do
  begin
Width :=rect.Right-rect.Left;
Height :=rect.Bottom-rect.Top;

    BitBlt(Canvas.Handle, 0, 0, Width, Height,
        GetDC(h), 0, 0, SRCCOPY);
 
    SaveToFile(SaveDialog1.FileName);
    Free;
  end;
Кольша вне форума Ответить с цитированием
Старый 26.07.2012, 22:41   #4
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
А зачем так делать если не секрет?
Программа аналогична графическому редактору. И рабочая область может быть сдвинута за пределы окна.
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума Ответить с цитированием
Старый 26.07.2012, 22:47   #5
Son
Пользователь
 
Аватар для Son
 
Регистрация: 24.11.2008
Сообщений: 76
По умолчанию

Цитата:
Сообщение от Кольша Посмотреть сообщение
Не уверен что сработает но все же:
Код:
var
h:Thandle;
rect:Trect;
begin
 if not SaveDialog1.Execute then exit;
h:=lenta.handle;
getwindowrect(h,rect);
with TBitmap.Create do
  begin
Width :=rect.Right-rect.Left;
Height :=rect.Bottom-rect.Top;

    BitBlt(Canvas.Handle, 0, 0, Width, Height,
        GetDC(h), 0, 0, SRCCOPY);
 
    SaveToFile(SaveDialog1.FileName);
    Free;
  end;
черный прямоугольник сохранят.
Лучше сдохнуть, чем жить с иглой в яйце (Кащей Бессмертный)
Son вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
повернуть изображение и сохранить полученное в файл gvozdkoff Мультимедиа в Delphi 7 14.07.2011 20:32
Как сохранить изображение в файл имея HBITMAP WebbMan Общие вопросы C/C++ 1 17.01.2011 15:19
Как сохранить изображение с канвы в файл Marsel737 Общие вопросы Delphi 4 20.01.2010 19:44
Сохранить с Web-камеры изображение в файл hoba БД в Delphi 3 16.10.2009 13:23
Сохранить/считать изображение в/из файл(а). amdbodia Общие вопросы C/C++ 4 26.05.2009 20:05