小编OzB*_*OzB的帖子

Xamarin表示图像大小不匹配

我正在使用Xamarin Forms实现一个跨平台的应用程序,我正在努力解决一个奇怪的错误:我正在尝试创建一个带有文本的按钮.要实现它,我正在使用AbsoluteLayout.

我为iOS项目添加了一个图像,用于每种iOS分辨率类型(.png,@ 2x.png,@ 3x.png).标准<Image />标签一切正常.但是,当以绝对布局包装图像时 - 图像会失去其分辨率比例并导致边框.

上面的代码:

    <AbsoluteLayout BackgroundColor="Blue">
        <Image Source="home/donation-button.png"
            AbsoluteLayout.LayoutFlags="All" 
                x:Name="Button"
            AbsoluteLayout.LayoutBounds="0, 0, 1, 1" 
            />
        <Label Text="Hello, World!"
                TextColor="White"
                FontAttributes="Bold"
                FontSize="16"
                AbsoluteLayout.LayoutFlags="All"
                AbsoluteLayout.LayoutBounds="0, 1, 1, 0.5" />
    </AbsoluteLayout> 
Run Code Online (Sandbox Code Playgroud)

产生以下内容:

在iPhone 6 +/6s +/7 +上(模拟器是iPhone 7 Plus): iPhone 7 Plus上的有效图像 这是预期的行为.

在iPhone 6/6s/7上(模拟器是iPhone 7): 请注意图像上的蓝色小边框 请注意图像上的小蓝色边框,它被设置为背景 AbsoluteLayout

在5SE/5s及以下: 注意蓝色边框 注意大蓝色边框.

为了调试这个,我把相同的图像放两次 - 首先在AbsoluteLayout中,然后作为StackLayout中的标准项.绝对布局中的图像具有比例错误,而没有它的图像则没有.

我有点迷失在这里.有什么方法可以破解我们的方式吗?我试图创造.自定义渲染器手动分配图像大小,但似乎UIImage提供了Xamarin使用的不同大小单位,并且它无法解决Android上的问题.

任何建议将非常感谢!

编辑(3/5/2017):只是为了让您更新 - 似乎这是Xamarin Forms中的一般错误.我发布的解决方案是一种解决方法,我一遍又一遍地坚持这个问题.

例如,我尝试创建此GUI: 所需的GUI图像

我已经创建了以下代码:

<StackLayout Orientation="Horizontal" 
            VerticalOptions="End"
            HorizontalOptions="FillAndExpand"
            BackgroundColor="#dd2c00">
            <Label Text="100"
                FontSize="46"
                Margin="10"
                FontFamily="OpenSans-Bold" 
                TextColor="#ffffff"
                VerticalOptions="FillAndExpand"
                VerticalTextAlignment="Center"
                HorizontalTextAlignment="Center" />
            <Label …
Run Code Online (Sandbox Code Playgroud)

c# android cross-platform ios xamarin.forms

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

模式 = 相同的 Numpy 卷积实现

我希望我为这个问题选择了正确的平台(不知道它是否与数学交流或计算机科学更相关)。

无论如何,我已经阅读了关于信号处理中的卷积的文章,我想尝试实现它。我能够计算卷积到N+M-1.

这可以通过以下函数(Python)来完成:

def convolve(x, h):
    xLen = len(x)
    hLen = len(h)
    if xLen == 0 or hLen == 0:
        return None

    totalLength = xLen + hLen - 1
    init = 0

    y = [0] * totalLength
    for n in range(init, totalLength):
        yn = 0
        k = max(0, n + 1 - xLen)
        j = n - k
        while k < hLen and j >= 0:
            yn += x[j] * h[k]
            j -= 1
            k += 1
        y[n] …
Run Code Online (Sandbox Code Playgroud)

python math numpy

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

使用 Instruments 检测 C/C++ 命令行内存泄漏

我正在尝试检测 macOS 上 C(和 C++)程序中的内存泄漏。在 Linux 和 Windows 中,我可以使用 轻松完成此操作valgrind,但不幸的是,它在 macOS 上不可用。

由于我有 ObjC 和 iOS 开发的背景经验,我想使用 Instruments 来进行内存泄漏检查。乍一看,这听起来非常适合这项工作。

我写了这个非常简单的泄露程序:

#include <stdlib.h>
#include <stdio.h>

int* allocSomething() {
  return malloc(sizeof(int));
}

int main(int argc, const char * argv[]) {
  int* p = allocSomething();
  *p = 5;
  printf("*p = %d\n", *p);
  p = NULL;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我通过 Clang Static Analyzer 运行了它,它完成了这项工作,但我希望它也能被 Instruments 捕获,因为我正在寻找合适的 Valgrind 替代品。因此:

  • 我更改了配置文件架构以使用调试而不是发布。
  • 我确保没有优化。

然而,使用 Instruments 后: 仪器未检测到泄漏

正如您所看到的,没有泄漏报告。在网上搜索后,我遇到了Can't detector C Leaks in xcode …

c xcode valgrind memory-leaks xcode-instruments

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

从整数初始化 BitArray

我正在尝试从整数值初始化 System.BitArray 实例。但是,看起来我没有得到正确的值。

我的代码是

        var b = new BitArray(BitConverter.GetBytes(0xfa2));
        for (int i = 0; i < b.Count; i++)
        {
            char c = b[i] ? '1' : '0';
            Console.Write(c);
        }
        Console.WriteLine();
Run Code Online (Sandbox Code Playgroud)

我也试过没有 BitConverter:

        var b = new BitArray(new int[] { 0xfa2 });
Run Code Online (Sandbox Code Playgroud)

但这些尝试似乎都没有奏效。这些是这里建议的尝试:Convert int to a bit array in .NET

我的输出:01000101111100000000000000000000。预期的输出:111110100010。

任何帮助将不胜感激!

c#

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