【发布时间】:2017-10-27 09:47:40
【问题描述】:
我想制作一个屏幕缩放器,它可以捕捉屏幕的一部分并进行缩放。下面的代码现在可以捕获屏幕并在 PictureBox 中播放。但是我有这个问题,当我打开程序时,我的内存一直在增长。我想肯定有一些资源没有释放,不知道怎么释放。
我让它像一个媒体播放器,但它不是播放视频,而是播放当前屏幕的一部分。
public partial class Form1 : Form
{
PictureBox picBox;
Bitmap bit;
Graphics g;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
picBox = pictureBox;
}
private void CopyScreen()
{
bit = new Bitmap(this.Width, this.Height);
g = Graphics.FromImage(bit as Image);
Point upperLeftSource = new Point(
Screen.PrimaryScreen.Bounds.Width / 2 - this.Width / 2,
Screen.PrimaryScreen.Bounds.Height / 2 - this.Height / 2);
g.CopyFromScreen(upperLeftSource, new Point(0, 0), bit.Size);
picBox.Image = Image.FromHbitmap(bit.GetHbitmap());
bit.Dispose();
g.Dispose();
}
private void timer_Tick(object sender, EventArgs e)
{
CopyScreen();
}
【问题讨论】:
-
@mjwills 它确实有效......内存仍在不断增长
-
@mjwills 我将计时器的间隔设置为 20,因此内存增长非常快,例如每秒 10MB
标签: c# picturebox