Thật tình cờ là tôi đang viết chương trình để chụp một số ảnh chụp màn hình và tôi gặp một số khó khăn với một tệp đã được một quy trình khác sử dụng, hy vọng ai đó có thể giúp tôi tìm cách "đóng" quy trình này hoặc làm sáng tỏ tôi Làm thế nào để tiến hành.
//Tạo một bitmap mới.
var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
PixelFormat.Format32bppArgb);
// Tạo một đối tượng đồ họa từ bitmap.
var gfxScreenshot = Graphics.FromImage(bmpScreenshot);
// Chụp ảnh màn hình từ góc trên bên trái đến góc dưới bên phải.
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
Screen.PrimaryScreen.Bounds.Y,
0,
0,
Screen.PrimaryScreen.Bounds.Size,
CopyPixelOperation.SourceCopy);
// Lưu ảnh chụp màn hình vào đường dẫn cụ thể mà người dùng đã chọn.
//bmpScreenshot.Save(nomeScreen + ".jpeg", ImageFormat.Jpeg);
bmpScreenshot.Save(@"c:\temp\"+nomeScreen+".jpeg", ImageFormat.Jpeg);
count++;
nomeScreen = "S"+Convert.ToString(count);
Đây là thứ tôi có (tôi biết, kỹ năng lập trình kém) để chụp một vài ảnh chụp màn hình, nhưng sau đó tôi muốn xóa chúng khỏi nơi tôi đã lưu trữ chúng
http://gyazo.com/4b50945b0d157d082f7897e34a705560
Đây là ảnh chụp màn hình về những gì đang xảy ra. Làm cách nào để "tắt" bitmap? Cho đến nay, điều duy nhất chương trình làm là chụp ảnh màn hình và xóa nó.
chuỗi pathString = "C:\\temp";
DirectoryInfo d = new DirectoryInfo(pathString);
foreach (var k in d.GetFiles("*.jpeg"))
{
File.Delete(pathString+"\\" + k);
}
Tôi tin rằng bạn cần gọi bmpScreenshot.Close() sau bmpScreenshot.Save().
Xin lỗi, tôi đang nghe điện thoại và không thể kiểm tra xem nó có tắt không.
Hãy thử điều này:
//Tạo một bitmap mới.
sử dụng(var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
PixelFormat.Format32bppArgb))
{
// Tạo một đối tượng đồ họa từ bitmap.
var gfxScreenshot = Graphics.FromImage(bmpScreenshot);
// Chụp ảnh màn hình từ góc trên bên trái đến góc dưới bên phải.
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
Screen.PrimaryScreen.Bounds.Y,
0,
0,
Screen.PrimaryScreen.Bounds.Size,
CopyPixelOperation.SourceCopy);
// Lưu ảnh chụp màn hình vào đường dẫn cụ thể mà người dùng đã chọn.
//bmpScreenshot.Save(nomeScreen + ".jpeg", ImageFormat.Jpeg);
bmpScreenshot.Save(@"c:\temp\"+nomeScreen+".jpeg", ImageFormat.Jpeg);
}
count++;
nomeScreen = "S"+Convert.ToString(count);
Vì vậy, tôi đã kiểm tra mã và nhận được một số kết quả thú vị.
Tôi có cái này:
private void button1_Click(object sender, EventArgs e)
{
chuỗi nomeScreen = "ảnh chụp màn hình"+new Random().Next();
ảnh chụp màn hìnhPath = Application.StartupPath+"\\" + nomeScreen + ".jpeg";
//Tạo một bitmap mới.
/*sử dụng (*/
var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
PixelFormat.Format32bppArgb);//)
// {
// Tạo một đối tượng đồ họa từ bitmap.
/*sử dụng (*/
var gfxScreenshot = Graphics.FromImage(bmpScreenshot);//)
//{
// Chụp ảnh màn hình từ góc trên bên trái đến góc dưới bên phải.
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
Screen.PrimaryScreen.Bounds.Y,
0,
0,
Screen.PrimaryScreen.Bounds.Size,
CopyPixelOperation.SourceCopy);
//}
// Lưu ảnh chụp màn hình vào đường dẫn cụ thể mà người dùng đã chọn.
//bmpScreenshot.Save(nomeScreen + ".jpeg", ImageFormat.Jpeg);
bmpScreenshot.Save(screenshotPath, ImageFormat.Jpeg);
// }
}
private void button2_Click(object sender, EventArgs e)
{
File.Delete(screenshotPath);
}
Nó hoạt động tốt mà không cần bất kỳ câu lệnh sử dụng nào, nhưng theo tôi sẽ tốt hơn nếu loại bỏ cả hai câu lệnh đã nhận xét. Có thể vấn đề của bạn nằm ở chỗ khác. Bạn đã kiểm tra quyền của thư mục chưa. Có lẽ bạn có thể thử lưu vào đường dẫn exe của ứng dụng? Điều này có thể khắc phục nó. Nếu vậy, bạn cần kiểm tra quyền của thư mục trên thư mục "temp" hoặc bất cứ nơi nào bạn đang cố lưu.
Tôi là một lập trình viên xuất sắc, rất giỏi!