안녕하세요!!
인터넷을 뒤져서… 화면을 캡쳐하는걸 만들었습니다.
public static bool CaptureWindow(System.Windows.Forms.Control control, ref System.Drawing.Bitmap bitmap)
{
Graphics g2 = Graphics.FromImage(bitmap);
IntPtr dc1 = CreateDC("DISPLAY", null, null, (IntPtr)null);
IntPtr dc2 = g2.GetHdc();
Point APoint = control.PointToScreen(new Point(0, 0));
BitBlt(dc2, 0, 0, control.Width, control.Height, dc1, APoint.X, APoint.Y, 13369376);
g2.ReleaseHdc(dc1);
g2.Dispose();
return true;
}
private void button4_Click(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(listView1.Width, listView1.Height); //가로,세로
MainForm.CaptureWindow(listView1, ref bitmap);
bitmap.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\report.jpg"); //저장경로
bitmap.Dispose();
}
이런 코드를 만들었습니다. 역시나 작동은 잘 합니다!
제가 원하는건 원래는!
창을 키우지 않고도 현재상태의! 리스트뷰의 길이와 넓이를 구해서 캡쳐를 하는건데 (캡쳐라기 보다는 사진으로 저장)
그치만… 아무리 검색해도 안나와서… 한참을 고민고민하다가 떠오른 방법이 바로!
캡쳐버튼을 누르면 현재 리스트뷰의 길이와 넓이 만큼 순간적으로 커졌다가 캡쳐를 하고 다시 원래 상태로 돌아오게 만들자 였습니다.
그럴러면 현재 리스트뷰에 있는 아이템?의 넓이와 높이를 알아야하는데… 아무리 검색해도 또 안나오더라구요… (라고 글을 쓰면서 어디선가 행의 갯수 구하기란 글을 본것같기도하고, 컬럼의 크기 구하기도 본것같음. 그렇다면 각 컬럼의 넓이를 더하면 리스트뷰의 넓이가 나오고 행의 갯수를 구하면 하나의 행의 높이 곱하기 갯수하면 되는것인가…)
그렇군요…
그 혹시 더 좋은 방법이 있다면…
제일 좋은건 역시나 첫번째인데 방법이 없을가요!
창은 작은 사이즈지만 현재 리스트뷰의 넓이와 길이에 딱 맞춰 캡쳐(아니고 사진으로 저장)하는 방법!!!
(높이가 높으면 아래는 캡쳐가 안되니ㅠㅠ)
=======
글을 쓰면서 다시 한번 깨닫네요…
한번에 단어를 만든다기 보단 자음 모음부터 차근차근 써나가야 된다는걸…
=======
int columnsWidth = listView1.Columns[0].Width + listView1.Columns[1].Width + listView1.Columns[2].Width + listView1.Columns[3].Width +
listView1.Columns[4].Width + listView1.Columns[5].Width + listView1.Columns[6].Width + listView1.Columns[7].Width + listView1.Columns[8].Width +
listView1.Columns[9].Width + listView1.Columns[10].Width + listView1.Columns[11].Width + listView1.Columns[12].Width + listView1.Columns[13].Width +
listView1.Columns[14].Width + listView1.Columns[15].Width + listView1.Columns[16].Width + listView1.Columns[17].Width + listView1.Columns[18].Width +
listView1.Columns[19].Width + listView1.Columns[20].Width + listView1.Columns[21].Width + listView1.Columns[22].Width + listView1.Columns[23].Width;
이방법말고… 뭔가 더 없을가요 한방에 구하는 방법…?