小编And*_*ers的帖子

创建高级HUD

我正在为WPF中的AR Drone Quadcopter创建一个界面.

我在我的HUD上添加了一些东西以使其可用.

HUD上更先进的控制之一是人工地平线,它告诉飞行员飞行器当前与地平线的对齐.

我有这3个PNG

的背景

大纲1

大纲3

我将移动的第一个图像(工艺的当前间距)和旋转(当前的工艺卷).

我将把第二张图像放在第一张图片上,这张图片只围绕中心轴旋转,它有一定程度的刻度,可以更直观地显示工艺品的滚动.

最后一个我将放在第二个,这个图像只是一个视觉改进者.

然后我想掩盖第一张图像,这样你才能看到图像2中圆圈内的什么.

最后但并非最不重要的是,我想为其添加一个文本块并显示当前的高度

结果看起来像这样

结果

我知道如何旋转和移动图像,但如何将图像放在彼此之上,如何屏蔽第一张图像?

编辑:感谢本我已经走到了这一步:

旋转没有翻译

但我还需要翻译图像Y位置(飞机的俯仰)

随着翻译

当我添加translate转换时,我还翻译了Clip(Mask)如何在不移动蒙版的情况下翻译图像?

wpf hud

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

旋转也调整大小?

我有这个xaml

    <Image Width="240" Height="240">                
        <Image.Source>                    
            <DrawingImage>
                <DrawingImage.Drawing>
                    <DrawingGroup>
                        <DrawingGroup>
                            <DrawingGroup>
                                <DrawingGroup.Transform>
                                    <TransformGroup>
                                        <RotateTransform Angle="-15" CenterX="120" CenterY="120" />
                                        <TranslateTransform Y="-20" />
                                    </TransformGroup>
                                </DrawingGroup.Transform>

                                <ImageDrawing ImageSource="Images\pNxVK.png" Rect="0,0,240,240" />
                            </DrawingGroup>

                            <DrawingGroup.ClipGeometry>
                                <EllipseGeometry Center="120,120" RadiusX="60" RadiusY="60" />
                            </DrawingGroup.ClipGeometry>
                        </DrawingGroup>

                        <DrawingGroup>
                            <DrawingGroup>
                                <!--<DrawingGroup.Transform>
                                    <RotateTransform Angle="-15" CenterX="120" CenterY="120" />
                                </DrawingGroup.Transform>-->
                                <ImageDrawing ImageSource="Images\zUr8D.png" Rect="0,0,240,240" />
                            </DrawingGroup>                                        
                            <ImageDrawing ImageSource="Images\XPZW9.png" Rect="0,0,240,240" />
                        </DrawingGroup>                                
                    </DrawingGroup>
                </DrawingImage.Drawing>
            </DrawingImage>
        </Image.Source>
    </Image>
Run Code Online (Sandbox Code Playgroud)

xaml的结果是(正确的大小)

在此输入图像描述

如果我取消注释上面的xaml中的旋转变换我得到这个(错误的大小) 在此输入图像描述

wpf xaml rotatetransform

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

MVC3显示日期+没有格式字符串的短时间

在MVC中你可以做到

[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy h:mm tt}"]
Run Code Online (Sandbox Code Playgroud)

这将转化为

10/12/2011 1:30 PM

这对于en-US用户来说是正确的

但是让我们说瑞典用户访问该网站(sv-SE)

然后我想要

2011-10-12 13:30

所以我不能使用格式字符串..如果我从模型中删除格式属性我会得到

2011年12月10日下午1:30:20为en-US和2011-10-12 13:30:20为sv-SE

如何在没有秒的情况下获得正确的格式?

culture localization datetime-format asp.net-mvc-3

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

WebApi和Ninject单例范围

我正在使用这篇文章让ninject与Asp.Net WebApi一起工作

http://www.strathweb.com/2012/05/using-ninject-with-the-latest-asp-net-web-api-source/

这打破了所有范围,例如InSingletonScope

编辑:答案在评论中

好吧,我大部分都弄明白了.问题是NinjectResolver的BeginScope方法返回一个新的NinjectScope,它将_kernel.BeginBlock()传递给构造函数.这会将实例从绑定中声明的范围重新关联到新的激活块.

因此,曾经作用于请求的内容现在作用于激活块.

为了解决这个问题,我改变了NinjectResolver:

public IDependencyScope BeginScope(){return new NinjectScope(_kernel); }

然后,为了防止NinjectScope处理内核本身,我在NinjectScope的Dispose块中注释掉了所有内容.

据我所知,这不应该产生太大影响.内置的缓存和收集机制将像往常一样工作,轮询GC并自动在缓存中部署实例.

我认为问题的核心在于WebApi本身正在尝试完成每个请求范围管理的工作,但Ninject已经有办法完成这项工作.这两种不同的范围机制似乎并不和谐.

ninject asp.net-web-api

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

MVVM关闭文件的方式有可能取消出来

我正在使用Avalondock 2.x作为我的一个开源项目,如果你关闭它时文档很脏,你应该可以取消关闭.

我正在使用Caliburn Micro和Coroutine,只有我能够解决它的方法是使用CM附加到事件

<i:EventTrigger EventName="DocumentClosing">
    <cal:ActionMessage MethodName="DocumentClosing">
        <cal:Parameter Value="$documentcontext" />
        <cal:Parameter Value="$eventArgs" />
    </cal:ActionMessage>
</i:EventTrigger>
Run Code Online (Sandbox Code Playgroud)

事件arg有取消属性.这个approuch的问题是它不是很MVVM友好,我已经创建了一个小帮手方法来Coroutinify这个像

public IEnumerable<IResult> Coroutinify(IEnumerable<IResult> results, System.Action cancelCallback)
{
    return results.Select(r =>
        {
            if (r is CancelResult)
                cancelCallback();

            return r;
        });
}
Run Code Online (Sandbox Code Playgroud)

用过像

public IEnumerable<IResult> DocumentClosing(ScriptEditorViewModel document, DocumentClosingEventArgs e)
{
    return Result.Coroutinify(HandleScriptClosing(document), () => e.Cancel = true);
}
Run Code Online (Sandbox Code Playgroud)

这有效,但它有点笨拙等,是否有更多MVVM方式关闭Avalondock文件取消能力?

编辑:源代码

https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Shells/MainShellView.xaml#L29

https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Shells/MainShellViewModel.cs#L110

https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Result/ResultFactory.cs#L49

c# wpf mvvm avalondock caliburn.micro

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

将SignalR 2.0 Owin管道与SignalR库一起使用

我正在考虑将该库升级到SignalR 2.0

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy

我希望它通过IAppBuilder接口支持2.0 Owin管道,而不是RouteCollection像SignalR 1.x那样使用。

问题是,如何从IAppBuilder获取路由集合?我需要它来注册处理我的自定义js脚本的自定义IHttpHandler(例如SignalR注册其中心脚本)

我的lib的1.x设置看起来像这样

public static class SignalRConfig
{
    public static void Register(RouteCollection routes)
    {
        routes.MapHubs();
        routes.MapEventProxy<Contracts.Events.Event>();
    }
}
Run Code Online (Sandbox Code Playgroud)

我对2.0配置的目标是这样的

public static class SignalRConfig
{
    public static void Configuration(IAppBuilder app)
    {
        app.MapSignalR();
        app.MapEventProxy<Contracts.Events.Event>();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的依赖于RouteCollection的代码如下所示

public static class RouteCollectionExtensions
{
    public static void MapEventProxy<TEvent>(this RouteCollection routes)
    {
        Bootstrapper.Init<TEvent>();

        routes.Add(new Route(
                       "eventAggregation/events",
                       new RouteValueDictionary(),
                       new RouteValueDictionary() {{"controller", string.Empty}},
                       new EventScriptRouteHandler<TEvent>()));
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:看起来非常复杂,无法让Owin满足请求,我可以在SignalR 2.0中使用辅助方法来注册路由和该路由的处理程序吗?

更新: 这段代码看起来像是我在正确的轨道上

using Owin;
using SignalR.EventAggregatorProxy.Boostrap;
namespace SignalR.EventAggregatorProxy.Owin …
Run Code Online (Sandbox Code Playgroud)

c# asp.net signalr owin

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

Owin Middleware在服务器上产生404

我有一个owin中间件,它在我的开发机器上的IIS7上工作(win7).但是当部署到2008服务器时,页面返回404

我像这样连接中间件

public static class AppBuilderExtensions
{
    public static void InitTemplateStore(this IAppBuilder app, string templatePath, string fileMask)
    {
        TemplateStoreMiddleware.Init(templatePath, fileMask);
        app.Map("/templates", subApp => subApp.Use<TemplateStoreMiddleware>());
    }
}
Run Code Online (Sandbox Code Playgroud)

可以在此处找到使用中间件的代码

https://github.com/AndersMalmgren/Knockout.Bootstrap.Demo

该站点作为IIS上的默认网站下的虚拟应用程序托管

编辑:我是否需要添加默认角色之外的任何角色?

IIS正在使用StaticFile处理程序,其中offcourse是错误的,为什么会发生这种情况?

Module  IIS Web Core
Notification    MapRequestHandler
Handler StaticFile
Error Code  0x80070002
Requested URL   http://localhost:80/knockout.bootstrap.demo/templates?root=shared
Physical Path   C:\inetpub\knockout.bootstrap.demo\templates
Logon Method    Anonymous
Logon User  Anonymous
Run Code Online (Sandbox Code Playgroud)

.net c# iis-7 owin

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

已定义属性名称"ProductId"

我有一个使用FK ProductId有关系的实体,然后我使用复合键ProductId和VehicleId在同一个实体上有另一个关系.这不起作用.我明白了

在模型生成期间检测到一个或多个验证错误:

ProductId:Name:类型中的每个属性名称必须是唯一的.已定义属性名称"ProductId".

配置代码

public class BookingConfiguration : EntityTypeConfiguration<Booking>
    {
        public BookingConfiguration()
        {    
            ...

            HasRequired(b => b.Product)
                .WithMany(p => p.Bookings)
                .Map(m =>
                {
                    m.MapKey("ProductId");
                });

            HasRequired(b => b.Vehicle)
                .WithMany(v => v.Bookings)
                .Map(m =>
                {
                    m.MapKey("ProductId","VehicleId");
                });
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-6

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

批次与Tris表现

我们拥有12k tris(A货物集装箱)的资产,我们在Unity Asset商店找到了一个更好看的资产,拥有3.5k tris.然而,新资产的物理长度是旧资产的一半,因此为了保持相同的水平设计,我们需要为每个旧资产提供两个对象.

我们为对象勾选了静态批处理.

新资产与查看同一场景中同一位置的旧统计数据

tris: 800k vs 1.1m
verts 900k vs 1.4m
batches: 611 vs 490
setpass calls: 192 vs 167

Bonus
Lightmap: 150mb vs 200mb
Run Code Online (Sandbox Code Playgroud)

所以我们有更多的批次和绘制调用显然是因为对象数量较多.批量/ setpass调用中三重计数的减少是否值得增加?

我们的目标平台是SteamVR(台式电脑和HTC Vive/Rift),推荐规格为GTX 970和中端CPU

在前景的背景新的资产的老资产 在此输入图像描述

unity-game-engine

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

Unity画布中的文本损坏

没有特别的原因,我们的网格中的文本有时会被完全打破.底层字符串是正确的 - 它是弄乱了的UI.

看起来像这样

在此输入图像描述

unity-game-engine

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