在一个解决方案中我有两个项目,一个是dll项目,第二个是windows窗体。 在form1的windows窗体项目中,我可以调用dll项目中的方法,例如:
在form1顶部:
Capture.Hook.DX11.DXOverlayEngine overlayengine;
在构造函数中:
overlayengine = new Capture.Hook.DX11.DXOverlayEngine();
然后在构造函数中我可以:
overlayengine.Draw();
在Draw()方法的项目dll中有两行绘制:
_spriteEngine.DrawString(textElement.Location.X + 1800, textElement.Location.Y, textElement.Text, textElement.Color.R, textElement.Color.G, textElement.Color.B, textElement.Color.A, font);
_spriteEngine.DrawString(textElement.Location.X + 1800, textElement.Location.Y + 25,
DateTime.Now.ToString("h:mm tt"),textElement.Color.R, textElement.Color.G, textElement.Color.B, textElement.Color.A, font);
这就是我现在所做的:
在dll项目(库类型项目)中,我添加了顶部:
public bool DrawEnabled { get; set; }
然后在Draw()方法中我做了:
if (DrawEnabled == true)
{
_spriteEngine.DrawString(textElement.Location.X + 1800, textElement.Location.Y, textElement.Text, textElement.Color.R, textElement.Color.G, textElement.Color.B, textElement.Color.A, font);
_spriteEngine.DrawString(textElement.Location.X + 1800, textElement.Location.Y + 25,
DateTime.Now.ToString("h:mm tt"), textElement.Color.R, textElement.Color.G, textElement.Color.B, textElement.Color.A, font);
}
然后在form1中我做了顶部:
Capture.Hook.DX11.DXOverlayEngine overlayengine;
然后在form1构造函数中:
overlayengine = new Capture.Hook.DX11.DXOverlayEngine();
overlayengine.DrawEnabled = false;
然后在form1中的按钮点击事件中我做了:
void gkh_KeyDown(object sender, KeyEventArgs e)
{
overlayengine.DrawEnabled = true;
}
我使用了一个断点,它正在进行并且正在进行overlayengine.DrawEnabled = true;但是当我按下键时,我看不到任何地方的图纸。
出了什么问题?
答案 0 :(得分:0)
您只需在Click事件处理程序中调用Draw方法
即可private void button1_Click(object sender, System.EventArgs e)
{
overlayengine.Draw();
}
希望这能帮到你。
答案 1 :(得分:0)
我不确定你的要求,但是因为听起来你从winforms项目引用了你的DLL,所以你有两个项目的来源。
为什么不直接为接受bool的draw方法添加重载?然后从重载调用原始方法。
既然你在winform中做出bool决定然后调用draw方法,为什么不做决定调用或不从表单调用draw方法?
或者我完全忽略了这个问题的重点?
答案 2 :(得分:0)
不是将布尔标志添加到Form1
,而是将其添加到DxOverlayEngine
并检查库Draw()
实现中的本地布尔标志,以便在设置为{{1时绕过必要的行}}
然后除了绘制之外,还向库中添加访问器方法,例如
false
在C#中,您可以使用公共属性来完成同样的事情。
void SetDrawEnabled(bool enable)
bool GetDrawEnabled();
单击Form1上的按钮时,适当更改DrawEnabled状态。在SetDrawEnabled中,在适当的状态转换(无效)中调用Draw()。
实现此目的的一种方法是每次设置DrawEnabled的值时直接调用Draw()。
public bool DrawEnabled { get; set; }