小编fas*_*all的帖子

我可以在逻辑上重新排序表中的列吗?

如果我在Microsoft SQL Server中向表中添加列,是否可以在查询中以逻辑方式控制列的显示位置?

我不想搞乱磁盘上列的物理布局,但我希望在可能的情况下逻辑地将列组合在一起,以便SQL Server Management Studio等工具以方便的方式列出表的内容.

我知道我可以通过SQL Management Studio执行此操作,进入表的"设计"模式并拖动列的顺序,但我希望能够在原始SQL中执行此操作,以便我可以执行排序从命令行编写脚本.

sql-server

89
推荐指数
4
解决办法
7万
查看次数

我可以按类型获得C#委托的签名吗?

如果您有类型信息,是否有一种直接的方法使用反射来获取委托的参数列表?

例如,如果我声明委托类型如下

delegate double FooDelegate (string param, bool condition);
Run Code Online (Sandbox Code Playgroud)

然后获取该委托类型的类型信息,如下所示

Type delegateType = typeof(FooDelegate);
Run Code Online (Sandbox Code Playgroud)

是否可以从该类型信息对象中检索返回类型(double)和参数列表({string,bool})?

c# reflection delegates

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

我应该如何从WinForms PictureBox中的屏幕空间坐标转换为图像空间坐标?

我有一个应用程序,在Windows窗体PictureBox控件内显示一个图像.的SizeMode控制被设定为Zoom,使得包含在该图像PictureBox将在一个方面,正确的方式不管尺寸的显示PictureBox.

这对于应用程序的视觉外观非常有用,因为您可以根据需要调整窗口大小,并始终使用最适合的图像显示图像.不幸的是,我还需要在图片框上处理鼠标点击事件,并且需要能够从屏幕空间坐标转换为图像空间坐标.

看起来很容易从屏幕空间转换到控制空间,但我没有看到任何明显的方法从控制空间转换到图像空间(即源图像中已在图片框中缩放的像素坐标).

有没有一种简单的方法可以做到这一点,或者我应该复制他们在内部使用的缩放数学来定位图像并自己进行翻译?

c# picturebox winforms

17
推荐指数
2
解决办法
3628
查看次数

如何实现photoshop剪切滤镜?

Photoshop有很多很酷的艺术过滤器,我很想了解底层算法.

一个特别有趣的算法是Cutout过滤器(上面链接中的数字2).

它有三个可调参数,级别数,边缘简洁性和边缘保真度.级别的数量似乎推动了直接的分色算法,但其他滑块在技术上做到了什么.

我认为他们正在做一些与Vornoi图或k-means分割有关的事情,但在维基百科上四处寻找并没有导致任何明显映射到Photoshop正在做的事情,特别是考虑到过滤器渲染自身的速度.

Photoshop滤镜的技术说明是否有任何来源?或者,您对如何实现此特定过滤器有任何想法吗?

language-agnostic photoshop algorithm reverse-engineering image-processing

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

如果我在发送时在c#中注册了一个事件,我保证在发送期间不再被调用吗?

在C#中,我发现自己偶尔想要在发送同一事件的过程中为事件注册一个方法.例如,如果我有一个基于相同事件的连续调度转换状态的类,我可能希望第一个状态的处理程序取消注册自身并注册第二个处理程序.但是,我不想在下次触发事件之前调度第二个处理程序.

好消息是,C#的Microsoft实现看起来就像这样.事件注册语法sugar被调用System.Delegate.Combine替换,System.Delegate.Combine只将当前调用列表和新方法连接到一个单独的列表中,并将其分配给事件属性.这给了我我想要的行为.

所以,我的问题是:这是语言标准的保证行为吗?我希望能够在单声道的其他平台上运行我的C#代码,并且通常希望确保我不基于其实现对语言标准做出假设.

我在MSDN上找不到任何确切的信息.

如果你想要我所谈论的具体例子,这里有一个例子:

    delegate void TestDelegate();
    static event TestDelegate TestEvent;

    static void Main (string[] args) {
        TestEvent += TestDelegateInstanceFirst;
        TestEvent();
        TestEvent();
    }

    static void TestDelegateInstanceFirst () {
        Console.WriteLine("First");
        TestEvent += TestDelegateInstanceSecond;
    }

    static void TestDelegateInstanceSecond () {
        Console.WriteLine("Second");
    }
Run Code Online (Sandbox Code Playgroud)

至少在Windows上,输出是:

First
First
Second
Run Code Online (Sandbox Code Playgroud)

c# mono events

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