如何在 C# 中转换这段代码以使其在 C++ 中工作?
How do I convert this piece of code in c# to make it work in c++?
我的目标是使用 c++/cli 捕获 windows 表单的屏幕。下面是捕获 window 的代码,但是它是在 C# 中。我必须对代码进行哪些更改才能在 C++ 中工作?
Graphics myGraphics = this.CreateGraphics();
Size s = this.Size;
memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
Graphics memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);
我尝试过的:
我试过在 c++ 中使用下面的代码,但是,我在 ** ** 中的部分出现错误。
错误说预期一个;在 Size 即 Size 之后; s = 这个-> 大小;这对我来说没有意义
Graphics^ myGraphics = this->CreateGraphics();
Size **s** = this->Size;
memoryImage = gcnew Bitmap(**s**->Width, s->Height, myGraphics);
Graphics^ memoryGraphics = Graphics::FromImage(memoryImage);
memoryGraphics->CopyFromScreen(this->Location.X, this->Location.Y, 0, 0, s);
您的代码看起来基本正确。
- 我认为
Size s
越来越混乱,因为 Size
既是类型的名称,也是此对象上 属性 的名称。它认为您正在尝试检索 Size 属性 并丢弃结果。要解决此问题,请使用声明类型的全名:System.Drawing.Size s = this->Size;
。 (您也可以使用 auto
,或者完全删除局部变量并多次调用 this->Size
。)
- System.Drawing.Size 是一个值结构,而不是引用 class。是值类型,不是引用类型,所以需要做
s.Width
和s.Height
。
- 这个类似于Location:Location returns一个Point,是一个值类型,而你已经在做
Location.X
,而不是Location->X
。
我的目标是使用 c++/cli 捕获 windows 表单的屏幕。下面是捕获 window 的代码,但是它是在 C# 中。我必须对代码进行哪些更改才能在 C++ 中工作?
Graphics myGraphics = this.CreateGraphics();
Size s = this.Size;
memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
Graphics memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);
我尝试过的: 我试过在 c++ 中使用下面的代码,但是,我在 ** ** 中的部分出现错误。 错误说预期一个;在 Size 即 Size 之后; s = 这个-> 大小;这对我来说没有意义
Graphics^ myGraphics = this->CreateGraphics();
Size **s** = this->Size;
memoryImage = gcnew Bitmap(**s**->Width, s->Height, myGraphics);
Graphics^ memoryGraphics = Graphics::FromImage(memoryImage);
memoryGraphics->CopyFromScreen(this->Location.X, this->Location.Y, 0, 0, s);
您的代码看起来基本正确。
- 我认为
Size s
越来越混乱,因为Size
既是类型的名称,也是此对象上 属性 的名称。它认为您正在尝试检索 Size 属性 并丢弃结果。要解决此问题,请使用声明类型的全名:System.Drawing.Size s = this->Size;
。 (您也可以使用auto
,或者完全删除局部变量并多次调用this->Size
。) - System.Drawing.Size 是一个值结构,而不是引用 class。是值类型,不是引用类型,所以需要做
s.Width
和s.Height
。- 这个类似于Location:Location returns一个Point,是一个值类型,而你已经在做
Location.X
,而不是Location->X
。
- 这个类似于Location:Location returns一个Point,是一个值类型,而你已经在做