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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2013, 12:43   #1
jin_jin
Новичок
Джуниор
 
Регистрация: 15.02.2013
Сообщений: 1
По умолчанию Форма IMAGE BMP сломал голову

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

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

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

вот как сохраняю
Код HTML:
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 результат
Код HTML:
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);


во 2 случае форма по размеру правильная только обрезанная картинка
в чем может быть загвоздка?

Последний раз редактировалось jin_jin; 15.02.2013 в 12:46.
jin_jin вне форума Ответить с цитированием
Старый 15.02.2013, 20:29   #2
execom
Редкий тунеядец
Форумчанин
 
Аватар для execom
 
Регистрация: 29.10.2006
Сообщений: 595
По умолчанию

ну скорей всего проблема решится после переустановки дров на видео, но в крайнем случае можно сделать кустарно дедовским способом:
создать самодельный BMP файл в который загрузить пиксели полученные PutPixel по всемо периметру окна при этом для гарантированного получения результата форму придется автоматически пошевелить а в конце вернуть в исходное положение. Например читаем цвет пикселя по координате экрана 1.1 и прогоняем позиционирование формы так что бы через эту точку проскочила поочередно вся картинка.. Выглядеть это будет отвратительно и скорей всего долго но работать должно))
execom вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всю голову сломал с индексацией сайта engineer_pro PHP 4 17.08.2012 21:20
Не могу разобраться с ошибками, голову сломал Cyber Общие вопросы C/C++ 8 14.02.2011 16:40
Как в Image.Picture.Bitmap загрузить и отмаштабировать bmp jpg pnp картинки? XerSon Общие вопросы Delphi 33 27.11.2010 16:32
Всю голову сломал lesha_firs Общие вопросы Delphi 6 17.06.2009 16:59
сохранить в BMP из Image Toxa Компоненты Delphi 4 20.04.2007 12:32