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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 22.07.2014, 11:25   #11
Nastya1998
Пользователь
 
Регистрация: 22.07.2014
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Это С++ Builder. А вот из этого кода, можно выдрать преобразование BMP в JPG и Icon.
Мне нужно в формате Delphi!
Nastya1998 вне форума
Старый 22.07.2014, 11:27   #12
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Ну может дельфинисты переведут. Я в Дельфинах ни бум-бум.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума
Старый 22.07.2014, 11:29   #13
Nastya1998
Пользователь
 
Регистрация: 22.07.2014
Сообщений: 19
По умолчанию

А мне нужен тот кто бум-бум
Nastya1998 вне форума
Старый 22.07.2014, 16:18   #14
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, OleCtrls, SHDocVw, Jpeg, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

function GetScreenShot(const AHandle: THandle; const CompressPercent: Byte;
var AImage: TJPEGImage): Boolean;
  // В качестве параметров передаются:
  // AHandle - хэндл окна, скриншот которого мы хочем получить
  // CompressPercent - процент сжатия картинки
  // AImage - картинка, в которую будет помещено изображение
  // в случае успешного скриншота функция вернет True
  {©Drkb v.3(2007): www.drkb.ru}
var
  fBitmap: TBitmap;
  DC: HDC;
  Rect: TRect;
begin
  Result := False;
  if AImage = nil then Exit;
  DC := GetDC(AHandle);
  if DC <> 0 then
  try
    fBitmap := TBitmap.Create;
    try
      if not GetClientRect(AHandle, Rect) then Exit;
      fBitmap.Width := Rect.Right - Rect.Left;
      fBitmap.Height := Rect.Bottom - Rect.Top;
      fBitmap.PixelFormat := pf32bit;
      Result := BitBlt(fBitmap.Canvas.Handle, 0, 0, fBitmap.Width,
      fBitmap.Height, DC, 0, 0, SRCCOPY);
      if not Result then Exit;
      AImage.Assign(fBitmap);
      AImage.CompressionQuality := CompressPercent;
    finally
      fBitmap.Free;
    end;
  finally
    ReleaseDC(AHandle, DC);
  end;
end;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  keypreview:=true;
  webbrowser1.Navigate('http://programmersforum.ru');
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Image: TJPEGImage;
  s:string;
  dm:tdatetime;
begin
    if key=VK_F1 then
      begin
        // Скриншот нашей формы
        Image := TJPEGImage.Create;
        try
          if GetScreenShot(Handle, 150, Image) then
            begin
              dm:=Now;
              DateTimeToString(s, 'dd.mm.yyyy h.m.s.z', dm);
              image.SaveToFile(s+'.jpg');
            end;
        finally
          Image.Free;
        end;
      end;
end;

end.
ZX Spectrum-128 вне форума
Старый 23.07.2014, 03:13   #15
Nastya1998
Пользователь
 
Регистрация: 22.07.2014
Сообщений: 19
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128 Посмотреть сообщение
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, OleCtrls, SHDocVw, Jpeg, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

function GetScreenShot(const AHandle: THandle; const CompressPercent: Byte;
var AImage: TJPEGImage): Boolean;
  // В качестве параметров передаются:
  // AHandle - хэндл окна, скриншот которого мы хочем получить
  // CompressPercent - процент сжатия картинки
  // AImage - картинка, в которую будет помещено изображение
  // в случае успешного скриншота функция вернет True
  {©Drkb v.3(2007): www.drkb.ru}
var
  fBitmap: TBitmap;
  DC: HDC;
  Rect: TRect;
begin
  Result := False;
  if AImage = nil then Exit;
  DC := GetDC(AHandle);
  if DC <> 0 then
  try
    fBitmap := TBitmap.Create;
    try
      if not GetClientRect(AHandle, Rect) then Exit;
      fBitmap.Width := Rect.Right - Rect.Left;
      fBitmap.Height := Rect.Bottom - Rect.Top;
      fBitmap.PixelFormat := pf32bit;
      Result := BitBlt(fBitmap.Canvas.Handle, 0, 0, fBitmap.Width,
      fBitmap.Height, DC, 0, 0, SRCCOPY);
      if not Result then Exit;
      AImage.Assign(fBitmap);
      AImage.CompressionQuality := CompressPercent;
    finally
      fBitmap.Free;
    end;
  finally
    ReleaseDC(AHandle, DC);
  end;
end;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  keypreview:=true;
  webbrowser1.Navigate('http://programmersforum.ru');
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Image: TJPEGImage;
  s:string;
  dm:tdatetime;
begin
    if key=VK_F1 then
      begin
        // Скриншот нашей формы
        Image := TJPEGImage.Create;
        try
          if GetScreenShot(Handle, 150, Image) then
            begin
              dm:=Now;
              DateTimeToString(s, 'dd.mm.yyyy h.m.s.z', dm);
              image.SaveToFile(s+'.jpg');
            end;
        finally
          Image.Free;
        end;
      end;
end;

end.
Спасибо, тему можно удалять, а куда сохраняются скриншоты?
Nastya1998 вне форума
Старый 23.07.2014, 05:04   #16
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию

Сохраняются в рабочую папку программы, строчка кода вот эта - image.SaveToFile(s+'.jpg'). Если вместо S указать путь типа 'c:\'+S, то будет на C диск сохранять. Если больше вопросов нет, пишите тему закроем.
Simply-Art вне форума
Старый 23.07.2014, 05:55   #17
Nastya1998
Пользователь
 
Регистрация: 22.07.2014
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Simply-Art Посмотреть сообщение
Сохраняются в рабочую папку программы, строчка кода вот эта - image.SaveToFile(s+'.jpg'). Если вместо S указать путь типа 'c:\'+S, то будет на C диск сохранять. Если больше вопросов нет, пишите тему закроем.
А почему фотографируется форма? А не только компонент? Мне нужно что бы только компонент WebBrowser фотографировался. И один раз сфотографировалась и все? Мне нужно что бы не ограниченное количество раз можно было фотографировать!

Последний раз редактировалось Nastya1998; 23.07.2014 в 06:07.
Nastya1998 вне форума
Старый 23.07.2014, 06:27   #18
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Nastya1998 Посмотреть сообщение
А почему фотографируется форма? А не только компонент? Мне нужно что бы только компонент WebBrowser фотографировался. И один раз сфотографировалась и все? Мне нужно что бы не ограниченное количество раз можно было фотографировать!
Потому-что код:

Код:
fBitmap.Width := Rect.Right - Rect.Left;
fBitmap.Height := Rect.Bottom - Rect.Top;
Задаёт угловые координаты формы. Поменяйте их на координаты нужного компонента.
Если нужен увтоматический режим, заключите этот код в обработчик таймера.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума
Старый 23.07.2014, 06:31   #19
Nastya1998
Пользователь
 
Регистрация: 22.07.2014
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Потому-что код:

Код:
fBitmap.Width := Rect.Right - Rect.Left;
fBitmap.Height := Rect.Bottom - Rect.Top;
Задаёт угловые координаты формы. Поменяйте их на координаты нужного компонента.
Если нужен увтоматический режим, заключите этот код в обработчик таймера.
Как? У браузера можно изменить размер окна и т.д, как тогда поступить что бы именно браузер фотался?
Nastya1998 вне форума
Старый 23.07.2014, 06:58   #20
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Nastya1998 Посмотреть сообщение
Как? У браузера можно изменить размер окна и т.д, как тогда поступить что бы именно браузер фотался?
У любого визуального компонента, есть параметры Width и Height.
В данном случае, используются координаты всей формы. Поменяйте их на координаты компонента cppWebBrowser.
cppWebBrowser.Width и т.д.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
{Вопрос}Черные скриншоты на Windows 7 Человек_Борща Общие вопросы Delphi 21 14.01.2014 03:31
скриншоты kinwood Помощь студентам 0 20.12.2012 03:40
Динамические скриншоты с ip камер hellebey ASP.NET 3 08.11.2012 15:15
что такое - скриншоты ? ХМС Свободное общение 6 19.01.2009 18:13
скриншоты рабочего стола Alar Общие вопросы Delphi 0 29.10.2006 10:59