0
현재 WPF 및 OpenGL을 사용하는 응용 프로그램에서 작업 중입니다. Airspace는 내 프로젝트에서 만족할만한 옵션이 아니기 때문에 WPF를 Bitmap으로 렌더링하기로 결정했습니다. 이제는 이벤트가 실행되는 데 방해가됩니다. 지금까지 필요한 UIElements VisualTree 걷는 함수를 만들 수 있었지만 iire 이벤트를 실행하는 방법에 대한 정보를 찾을 수 없습니다.wpf 오프 스크린 이벤트를 실행하는 방법
public static void MouseClickEventHandler(bool isleftbutton,int mouseX,int mouseY)
{
if(self == null)
{
return;
}
PointHitTestParameters p = new PointHitTestParameters(new Point(mouseX, mouseY));
VisualTreeHelper.HitTest(self, new HitTestFilterCallback(delegate(DependencyObject o)
{
return HitTestFilterBehavior.Continue;
}),
new HitTestResultCallback(delegate(HitTestResult r)
{
UIElement el = r.VisualHit as UIElement;
while(true)
{
if(el != null)
{
if(el.Focusable && (el is FrameworkElement))
{
if(isleftbutton)
{
Type t = el.GetType();
MemberInfo[] mem = t.GetMembers(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
Object locker = new Object();
bool clickable = false;
Parallel.ForEach(mem, delegate(MemberInfo member)
{
if(member.Name.ToLower().Contains("click"))
{
lock(locker)
{
clickable = true;
}
}
});
if(clickable)
{
//launch click event
Console.WriteLine("mouseClick:" + (el as FrameworkElement).Name);
return HitTestResultBehavior.Stop;
}
}
else
{
Console.WriteLine("mouseOver:" + (el as FrameworkElement).Name);
//launch mouse over event
return HitTestResultBehavior.Stop;
}
}
el = (UIElement)VisualTreeHelper.GetParent(el);
}
else
{
break;
}
}
return HitTestResultBehavior.Continue;
}), p);
}
오프 스크린 렌더링이 작동하지 않습니다 :) – Alex