小编Ben*_*Ben的帖子

如何使SurfaceView比屏幕更大?

我想有效地为相机预览做一个简单的数码变焦,所以我想我只需要将SurfaceView的大小调整为大于屏幕.其他问题(例如3813049)似乎表明这很容易,所以我创建了下面的示例代码,我希望让我只能看到水平图像的一半(因为SurfaceView的宽度是屏幕的两倍)并且具有图像只占水平屏幕的一半.但是,运行它(当我的Thunderbolt上使用Android 2.2.1定位到SDK版本4时)可以在水平填充屏幕时水平查看整个图像.SurfaceView似乎垂直行为(当我使它小于屏幕时),但Android不允许我使SurfaceView大于屏幕.

如何实现数码变焦?(不,我不能使用Camera.Parameters.setZoom;不仅Android 1.6不支持这种功能,而且不同的相机支持和实现这一点不同)

public class MagnifyTestActivity extends Activity implements SurfaceHolder.Callback {
    private MagnificationView mPreview;
    private SurfaceHolder mHolder;
    private Camera mCamera = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mPreview = new MagnificationView(this);
        setContentView(mPreview);
        mHolder = mPreview.getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public class MagnificationView extends SurfaceView {
        public MagnificationView(Context context) {
            super(context);
        }

        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            Display display = getWindowManager().getDefaultDisplay();
            int width = display.getWidth()*2;
            int height = display.getHeight()/2;
            widthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY);
            heightMeasureSpec …
Run Code Online (Sandbox Code Playgroud)

camera android zoom surfaceview

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

可以在C#中缩短数学参考吗?

在VB.NET中,我可以通过导入System.Math并直接引用其方法来使我的数学代码更加清晰:

Imports System.Math
[...]
Return New Vector3(Sin(az) * Cos(el), Cos(az) * Cos(el), Sin(el))
Run Code Online (Sandbox Code Playgroud)

但我不认为C#可以使用类来隐式访问它们的方法,所以我必须做类似的事情:

using System;
[...]
return new Vector3(Math.Sin(az) * Math.Cos(el), Math.Cos(az) * Math.Cos(el), Math.Sin(el));
Run Code Online (Sandbox Code Playgroud)

但那很难看; 它需要自己的滚动条!有没有办法用C#写一些看起来像我的VB.NET代码的东西?我可以为Sin和Cos编写局部包装器方法,但不会降低性能(因为函数调用的开销)?而且,这需要为我正在使用的每个类中使用的每个Math函数编写包装函数; 这也不是那么令人满意.

c# syntax import using

7
推荐指数
5
解决办法
730
查看次数

为什么我不能将内置用于重载subsref的类?

我想为特定类重载一种类型的subsref调用('(')类型),并保留对Matlab内置subsref的任何其他调用 - 具体来说,我希望Matlab通过'来处理属性/方法访问. " 类型.但是,当在类中重载subsref时,似乎Matlab的"内置"函数不起作用.

考虑这个课程:

classdef TestBuiltIn
    properties
        testprop = 'This is the built in method';
    end

    methods
        function v = subsref(this, s)
            disp('This is the overloaded method');
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

要使用重载的subsref方法,我这样做:

t = TestBuiltIn;
t.testprop
    >> This is the overloaded method
Run Code Online (Sandbox Code Playgroud)

这是预期的.但现在我想调用Matlab的内置subsref方法.为了确保我做得对,首先我尝试对结构进行类似的调用:

x.testprop = 'Accessed correctly';
s.type = '.';
s.subs = 'testprop';
builtin('subsref', x, s)
    >> Accessed correctly
Run Code Online (Sandbox Code Playgroud)

这也是预期的.但是,当我在TestBuiltIn上尝试相同的方法时:

builtin('subsref', t, s)
    >> This is the overloaded method
Run Code Online (Sandbox Code Playgroud)

... Matlab调用重载方法而不是内置方法.当我请求它调用内置方法时,为什么Matlab会调用重载方法?

更新:回应@Andrew Janke的回答,该解决方案几乎可行,但并不完全.考虑这个课程:

classdef TestIndexing …
Run Code Online (Sandbox Code Playgroud)

oop matlab overriding built-in

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

为什么HttpListener会忽略外部请求?

我的计算机位于路由器后面,它将端口80转发给它(作为端口80).我的问题是HttpListener似乎忽略了发往外部IP地址的请求.

问题不在于路由器; 如果我创建一个空白的C#控制台项目并只添加以下代码行:

System.Net.Sockets.TcpListener s = new System.Net.Sockets.TcpListener(System.Net.IPAddress.Any, 80);
s.Start();
System.Net.Sockets.TcpClient c = s.AcceptTcpClient();
Run Code Online (Sandbox Code Playgroud)

...并运行程序[注意:该程序第一次运行时,用户可能必须允许防火墙例外],如果我导航到它将终止

http://localhost/testpath/
Run Code Online (Sandbox Code Playgroud)

在我的浏览器中或如果我导航到

http://externalipaddress/testpath/
Run Code Online (Sandbox Code Playgroud)

在我的浏览器中 - 任一地址成功尝试端口80连接.因此,一切都设置正确 - 这台计算机可以接受端口80上的内部和外部连接.

现在,如果我创建另一个空白的C#控制台项目并仅添加以下代码行:

System.Net.HttpListener s = new System.Net.HttpListener();
s.Prefixes.Add("http://+:80/testpath/");
s.Start();
System.Net.HttpListenerContext c = s.GetContext();
Run Code Online (Sandbox Code Playgroud)

......首先,我会得到一个HttpListenerException说的访问,因为中提到的问题,否认了这一问题.然后,当我关闭Visual Studio并以管理员身份重新打开它时,它将正常运行.当我导航到该程序时,程序将终止(正确)

http://localhost/testpath/
Run Code Online (Sandbox Code Playgroud)

但是,如果我导航到我的请求,我的请求就会超时

http://externalipaddress/testpath/
Run Code Online (Sandbox Code Playgroud)

为什么我对HttpListener的外部请求超时? 结果可以使用"externalipaddress"的数字IP地址或域名重现,以及子文件夹,斜杠等的许多排列,以及前缀"http://*:80/testpath /","http: // externaldomain:80/testpath /"和"http:// externalipaddress:80/testpath /"(没有空格;为stackoverflow格式化添加).

.net c# tcplistener httplistener

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

如何添加EXIF信息以在.NET中对图像进行地理标记?

我在.NET中有一个Image.如何通过使用EXIF数据对其生成的纬度和经度进行编码来对图像进行地理标记,但无需使用外部库?

.net exif image geotagging

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