Показать сообщение отдельно
  #1  
Старый 24.01.2010, 18:45
vigard373 vigard373 вне форума
Прохожий
 
Регистрация: 23.12.2009
Адрес: Петербург
Сообщения: 12
Репутация: 10
По умолчанию Копирование области экрана в окно программы и в файл - одновременно

Пытаюсь одновременно занести информацию в окно своей программы и сохранить в файл.
Одной командой CopyRect обойтись не удаётся и приходится использовать B.Canvas.CopyRect
Но в итоге изображение помещается либо в PaintBox1 либо сохраняется в файл screentofile.bmp

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  DeskTop: TCanvas;
  B : TBitmap;
begin
  DeskTop := TCanvas.Create;
  B := TBitmap.Create;
  try
    with DeskTop do
      Handle := GetWindowDC(GetDesktopWindow);
    with PaintBox1.Canvas do
     begin
      B.Width := 120;
      B.Height := 120;
      CopyRect(Rect(0, 0, 174, 201), DeskTop, Rect(120, 120, 294, 321));
      B.SaveToFile('E:\screentofile.bmp');
     end;
  finally
    DeskTop.Free;
    B.Free;
  end
end;

Конечно можно использовать эти разные команды подряд, тогда всё работает, но считаю это 'варварским' способом.

Наверняка есть более элегантный способ, но чего то не дотумкаю... и кстати изображение в PaintBox почему то сразу пропадает после замещения его другими окнами, как сделать его неизменным?


И ещё маленький вопросик: Как наложить(разместить) два и более разных изображений в рамках одного PaintBox или Image, чтобы они не замещали друг друга, а потом сохранить в один файл или сразу сохранить сумму этих изображений без вывода их в окно программы?
Ответить с цитированием