Показать сообщение отдельно
  #1  
Старый 15.02.2013, 11:46
jin_jin jin_jin вне форума
Прохожий
 
Регистрация: 21.01.2013
Сообщения: 1
Репутация: 10
По умолчанию Сломал голову надо сохраненем формы в BMP

Разрешение экрана 1920 на 1080

форма 3661 на 1920
на форме IMAGE висит поверх выводятся данные

при сохранении сохраняется только видимая часть экрана а не вся форма
что самое интересное что вчера вся форма сохранялась до переустановки винды. (win7)

вот как сохраняю
Код:
    wndcanvas := TCanvas.Create;
    wndcanvas.Handle := GetWindowDC(Handle);
    bmp := TBitmap.Create;
    bmp.Width := 3651;
    bmp.Height := 1920;
    bmp.Canvas.CopyRect(bmp.Canvas.ClipRect, wndcanvas, wndcanvas.ClipRect);
      bmp.PixelFormat := pf32bit;
    bmp.SaveToFile(put+'1.bmp');
    bmp.Free;
    ReleaseDC(Handle, wndcanvas.Handle);
    wndcanvas.Free;



вот 2 результат
Код:
  FileName := ExtractFilePath(ParamStr(0)) + 'screen.bmp';
  Rec.TopLeft := ScreenToClient(Self.BoundsRect.TopLeft);
  Rec.BottomRight := ScreenToClient(Self.BoundsRect.BottomRight);
   Bit := TBitmap.Create;
   Bit.Width := Rec.Right - Rec.Left + 1;
  Bit.Height := Rec.Bottom - Rec.Top + 1;
  Bit.Canvas.CopyRect(Rect(0, 0, Bit.Width, Bit.Height), Self.Canvas, Rec);
  bit.SaveToFile(put+'2.bmp');
  FreeAndNil(Bit);
Админ: Пользуемся тегами для оформления кода!




во втором варианте сохраняет правильный размер форму но видимая часть только с экрана
Ответить с цитированием