小编Aki*_*24x的帖子

如何获得给予CGPoint的UIView?

我试图找到一种方法来获得特定的UIView给定a CGPoint.简而言之,我想做一个热门测试.

例如,我有一个UIView有很多子视图,其大小小于父级UIView.我想要做的是,当touchMoved事件发生时,检查触摸的子视图周围的其他子视图.为此,能够将a转换CGPoint为子视图会很好UIView.

我是Objective-C的新手.有没有好办法呢?任何建议都会非常有用.:)

objective-c touch uiview hittest ios

17
推荐指数
1
解决办法
7072
查看次数

如果可见,如何获取或计算没有垂直滚动条的ListBox的实际宽度

我想知道如果可见,如何获取或计算没有垂直滚动条ListBox的实际宽度.

我想要做的是改变ListBox中每个项目的宽度而不被Vertical Scrollbar覆盖.

Width="{Binding ActualWidth, 
    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}
Run Code Online (Sandbox Code Playgroud)

至少,上面的绑定告诉我ListBox的实际宽度,但是这个不处理垂直滚动条的宽度.

有什么好方法可以解决这个问题吗?

wpf binding listbox scrollbar

10
推荐指数
1
解决办法
4861
查看次数

在WPF中绑定来自xaml的代码中的const成员

有没有什么好的方法可以将属性绑定到代码隐藏中的const值?

当我使用ComboBox时,我通常在xaml和代码后面这样做:

XAML:

<ComboBox Name="cbBuz">
   <ComboBoxItem Content="foo" Uid="foo" IsSelected="true" />
   <ComboBoxItem Content="bar" Uid="bar" />
</ComboBox>
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

ComboBoxItem item = cbBuz.GetSelectedItem();
switch (item.Uid)
{
    case "foo":  ... break;
    case "bar":  ... break;
}
Run Code Online (Sandbox Code Playgroud)

我选择这种方式的原因如下:

  • 出于本地化目的,不应使用内容字符串来确定在保存和加载上一个选定项目期间选择了哪个项目.
  • 为简单起见,XAML和代码隐藏应该连接内部标识符(在本例中为Uid).因此,XAML和Code-behind可以单独维护.

但是,在维护方面,内部标识符应该在一个地方定义,如下所示:

//IDs
public const string ID_foo = "foo";
public const string ID_bar = "bar";

...

//
switch (item.Uid)
{
    case ID_foo:  ... break;
    case ID_bar:  ... break;
}
Run Code Online (Sandbox Code Playgroud)

问题是看似属性不能是const值,所以没有办法将ID_foo和ID_bar绑定到ComboBoxItem的Uid,如下所示:

//If ID_foo and ID_bar are properties, this will work.
<ComboBox Name="cbBuz">
   <ComboBoxItem Content="foo" Uid="{Binding ID_foo}" IsSelected="true" …
Run Code Online (Sandbox Code Playgroud)

c# wpf bind uid

9
推荐指数
1
解决办法
1万
查看次数

在WPF中,如何在设计视图中将样式应用于UserControl?

我通常在tab下的App.xml中定义样式和控件模板.因此,在设计UI时,我可以在带有.NET3.5的Visual Studio 2008中看到设计视图中应用了样式的UI.

但是,在另一种情况下,有时我只使用UserControl项目,在这种情况下,没有App.xml,因此UI在设计视图中显示为默认外观.在运行时很难知道实际的外观.

有没有办法将样式应用于UserControl?如果有一种方法可以在应用程序项目和UserControl项目之间共享相同的样式和模板,那将是完美的!

如果有解决方案,请告诉我.

c# wpf user-controls styles controltemplate

8
推荐指数
1
解决办法
1120
查看次数

在Mac OS X中相当于Windows的名为mutex?

目前我正在使用C++将软件从Windows移植到Mac OS X.

在Windows中,全局名为mutex的状态为废弃状态,这意味着互斥锁的当前所有者进程在不释放互斥锁的情况下消失.(这可能是由应用程序崩溃引起的)

由于存在废弃状态,试图锁定被遗弃的互斥锁不会造成死锁.
如果没有废弃的状态,它将永远等待不属于任何人的互斥锁.

还有另一种方法是使用超时来假设如果无法在一定时间内获得互斥锁而放弃互斥锁,但与废弃的互斥方式相比,它并不是一个完美的解决方案.在最坏的情况下,意外地两个进程可以访问由互斥锁锁定的对象.

在Mac OS X/Linux中是否有任何互斥支持被放弃的状态?

我研究了boost库,boost库有一个名为mutex,但是那个基于共享文件,所以它没有放弃状态.

请给我一些建议.

c++ linux macos mutex interprocess

7
推荐指数
1
解决办法
2455
查看次数

在WPF中,有没有办法将两个Style组合成一个控件?

我的情况如下.

我有一个App.xaml,包括ListView样式,如下所示:

<Style x:Key="{x:Type ListViewItem}" TargetType="ListViewItem">
    <Setter Property="SnapsToDevicePixels" Value="true"/>
    <Setter Property="OverridesDefaultStyle" Value="true"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ListBoxItem">
              ...
Run Code Online (Sandbox Code Playgroud)

但是,我想将一些样式添加到另一个xaml中,让我们在Window.xaml中这样说:

 <ListView AlternationCount="2" Background="#FFECECEC">
    <ListView.Resources>
        <Style x:Key="{x:Type ListViewItem}" TargetType="{x:Type ListViewItem}">
            <EventSetter Event="PreviewMouseDoubleClick" Handler="OnPreviewMouseDoubleClick" />
        </Style>
    </ListView.Resources>
 </ListView>
Run Code Online (Sandbox Code Playgroud)

所以,我想要做的是在App.xaml中将基本设计的样式定义为默认样式.然后,添加一些修改,例如添加上下文菜单,从每个xaml添加事件.

但是,通过上面的实现,App.xaml中定义的样式将被Window.xaml中定义的样式覆盖.

有没有办法解决问题并实现它?

wpf xaml styles

6
推荐指数
1
解决办法
5298
查看次数

使用Aero桌面在Windows上实时桌面捕获到内存

使用C++或C#,我试图以实时速度(超过30fps)将桌面捕获到内存中.这样我就能做任何我想做的事.但我不能用Windows Aero桌面做到这一点.

但是,即使Windows Aero处于打开状态,某些桌面捕获软件也会进行实时捕获.与Google Chrome Desktop Capture,TeamViewer和Windows远程桌面一样,它们可以以实时速度(30fps)捕获整个桌面,以防快速移动视频在桌面上播放.

根据互联网上的信息,到目前为止我尝试了以下方法:

  1. GDI BitBlt捕获或DirectX GetFrontBuffer如果Windows Aero打开,这将具有非常低的性能.长时间使用此方法继续捕获将最终通过Windows关闭Windows Aero.

  2. DWMRegisterThumbnail即使Windows Aero处于打开状态,这也将具有非常好的性能.但是,问题是在所有窗口都是复合后,这无法获得桌面的图像.因此,将不会捕获分层窗口(工具提示,下拉列表框).

  3. Magnifier.dll即使Windows Aero开启,这也会有一些良好的性能.但是,magnifier.dll会直接绘制成一个窗口,所以我无法直接将图像捕获到内存中.

如果有人知道或了解他们是如何实现的,请给我一个建议.

c# c++ directx capture dwm

5
推荐指数
0
解决办法
1072
查看次数

什么是放大WaveForm音频的正确公式?

我想知道放大WaveForm音频的正确公式是什么来自C++.

假设有一个16位波形数据:0x0000 0x2000,0x3000,0x2000,0x0000,(负数部分),...

由于声学原因,只需加倍数字就不会产生两倍大的音频:0x0000 0x4000,0x6000,0x4000,0x0000,(加倍负片),...

如果有人对音频修改有所了解,请告诉我.

c++ audio waveform amplitude

1
推荐指数
1
解决办法
2182
查看次数