Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сохранить в файл канву? [D7, XP]


ezorcist ©   (2005-12-29 15:31:00) 

Можно пример, подалуйста,
чего-то не догадаюсь((  в filestream как-то запихнуть...


Джо   (2005-12-30 02:05:00) [1]


>  [15] Германн ©   (30.12.05 01:52)

На все это, разумеется, есть свои причины. Но они бытовые и оффтопные. Но замечено очень метко :0)


Германн   (2005-12-30 01:52:00) [2]


> Джо ©   (29.12.05 20:29) [12]
>
>
> > [11] ezorcist   (29.12.05 20:16)
>
> Я сегодня добрый и беспринципный.


Не-а. Ты сегодня, то бишь вчера:
1. сначала ни злой, ни добрый, но "принципный" : >А впрочем, судя по реакции на ответ Leonid Troyanovsky — разбирайся-ка ты сам дружище.
2. затем - добрый и беспринципный. См. выше.
3. а потом просто злой:  >Выбрось его в корзину. С шифтом.

:-)


Джо   (2005-12-29 21:32:00) [3]


>  [13] ezorcist   (29.12.05 21:18)
> Я вот другой достал:

Выбрось его в корзину. С шифтом.


ezorcist   (2005-12-29 21:18:00) [4]

Спасибо)

Я вот другой достал:

 DeskTopDC := GetWindowDC(GetDeskTopWindow);
 DeskTopCanvas := TCanvas.Create;
 DeskTopCanvas.Handle := DeskTopDC;
 DeskTopRect := Rect(0, 0, Screen.Width, Screen.Height);
 Im:=TImage.Create(sock);
 With Im Do Begin
   Width:=Screen.Width;
   Height:=Screen.Height;
   Canvas.CopyRect(DeskTopRect, DeskTopCanvas, DeskTopRect);
   Picture.SaveToFile('screen.bmp');
   Free;
 End;
 ReleaseDC(GetDeskTopWindow, DeskTopDC);


Джо   (2005-12-29 20:29:00) [5]


> [11] ezorcist   (29.12.05 20:16)

Я сегодня добрый и беспринципный.


procedure MakeScreenshot (Bmp: TBitmap; CaptureCursor: Boolean = True);
var
 DC: HDC;
 ACursor: HICON;
 Pt: TPoint;
 CurInfo: tagCURSORINFO;
 IcoInfo: _ICONINFO;
begin
 Bmp.Width := Screen.Width;
 Bmp.Height := Screen.Height;

 DC := GetDC (GetDesktopWindow);
 try
   BitBlt (
     Bmp.Canvas.Handle,
     0,0,Bmp.Width,Bmp.Height,
     DC,
     0,0,
     SRCCOPY);

   if CaptureCursor then
   begin

     CurInfo.cbSize := SizeOf(CurInfo);
     GetCursorInfo(CurInfo);

     ACursor := CurInfo.hCursor;
     Pt := CurInfo.ptScreenPos;

     GetIconInfo (ACursor,IcoInfo);

     DrawIcon(
       Bmp.Canvas.Handle,
       Pt.X-IcoInfo.xHotspot,
       Pt.Y-IcoInfo.yHotspot,
       ACursor
     )
   end;

 finally
   ReleaseDC (GetDesktopWindow,DC);
 end;
end;

....

procedure TForm1.Button1Click(Sender: TObject);
var
 Bmp: TBitmap;
begin
 Bmp := TBitmap.Create;
 try
   // делаем скриншот вместе с изображением курсора
   MakeScreenshot(Bmp,True);
   Bmp.SaveToFile ('d:\screenshot.bmp');
 finally
   Bmp.Free;
 end;
end;


ezorcist   (2005-12-29 20:16:00) [6]

H:=GetWindowDC(GetDeskTopWindow);
Canvas.Handle:=H


Джо   (2005-12-29 19:50:00) [7]


>  [8] ezorcist   (29.12.05 19:31)
> GetWindowDC(GetDeskTopWindow);
> возвращает hdc

В вопросе написано "Канва". Где в вышеприведенном хоть какая-то канва?

А впрочем, судя по реакции на ответ Leonid Troyanovsky — разбирайся-ка ты сам дружище.


Leonid Troyanovsky   (2005-12-29 19:40:00) [8]


> ezorcist   (29.12.05 19:31) [8]
> Невероятно остроумно)) Если не знаешь чего лезешь??


И откуда ж ты знаешь, что я не знаю?
Хотя, конечно, человеку неведомо то, чего он не знает.

А.. это в смысле, чего не помочь материально..
Ну, это - google подаст.
Лень в сочетании с агресивностью не переношу ;)

--
Regards, LVT.


ezorcist   (2005-12-29 19:31:00) [9]

2 Leonid Troyanovsky
Невероятно остроумно)) Если не знаешь чего лезешь??

2 Джо
GetWindowDC(GetDeskTopWindow);
возвращает hdc


Джо   (2005-12-29 19:16:00) [10]


>  [5] ezorcist   (29.12.05 19:05)

Скажу проще: как именно ты делаешь этот screenshot?


Leonid Troyanovsky   (2005-12-29 19:09:00) [11]


> ezorcist   (29.12.05 19:05) [5]
> Эм.... Спрошу попроще: как сохранить в файл скрин?


Все просто: Paint.exe, вставить, сохранить.

--
Regards, LVT.


ezorcist   (2005-12-29 19:05:00) [12]

Эм.... Спрошу попроще: как сохранить в файл скрин?


Джо   (2005-12-29 17:49:00) [13]

Или в метафайл.


MBo   (2005-12-29 17:48:00) [14]

Скопировать в битмап, а битмап сохранить


ezorcist   (2005-12-29 17:03:00) [15]

С: TCanvas;
begin
C.bitmap
Тут он пишет, что нет bitmap'a (


з. танька   (2005-12-29 15:45:00) [16]

canvas.bitmap.savetofile()


Наверх

Титульная страница Поиск, карта сайта Написать письмо