你好,我有这样的签名:

这个字符串专门编码到DataUrl:
"data:image/png; base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAADICAYAAADGFbfiAAAYlElEQVR4Xu2dC8w1R1nHQSCIgIKVGLmoiLciFwUs ...(long string)"
我想要做的是将此DataUrl转换为PNG图像,并将图像保存到设备,这是我到目前为止所做的:
if (newItem.FieldType == FormFieldType.Signature)
{
if (newItem.ItemValue != null)
{
//string completeImageName = Auth.host + "/" + li[i];
string path;
string filename;
string stringName = newItem.ItemValue;
var base64Data = Regex.Match(stringName, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var binData = Convert.FromBase64String(base64Data);
path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
filename = Path.Combine(path, base64Data);
if (!File.Exists(filename))
{
using (var stream = new MemoryStream(binData))
{
//Code crashing here--------------------------
File.WriteAllBytes(filename, binData);
}
}
newItem.ItemValue = filename;
}
}
App.Database.SaveReportItem(newItem);
Run Code Online (Sandbox Code Playgroud)
但是我的代码使我的应用程序在此行中专门崩溃:
File.WriteAllBytes(filename,binData);
我用作参考(Link)的样本使用的是PictureBox,但是使用Xamarin时没有使用pictureBox.
有任何想法吗?
我有一个像这样编码的stacklayout:
StackLayout mainStackLayOut = new StackLayout{
BackgroundColor = Color.Blue,
//VerticalOptions = LayoutOptions.FillAndExpand,
//WidthRequest = width,
HorizontalOptions = LayoutOptions.FillAndExpand,
Orientation = StackOrientation.Vertical
};
Run Code Online (Sandbox Code Playgroud)
但是我希望我的stacklayout能够填满所有的屏幕宽度和高度,我也添加了这样的树形按钮:
StackLayout buttonsStackLayOut = new StackLayout
{
BackgroundColor = Color.White,
//VerticalOptions = LayoutOptions.Fill,
HorizontalOptions = LayoutOptions.Fill,
Orientation = StackOrientation.Horizontal,
Spacing = 0
};
mainStackLayOut.Children.Add(buttonsStackLayOut);
Image doctorImage = new Image
{
WidthRequest = width / 3,
HeightRequest = 50,
BackgroundColor = Color.Gray,
Source = ImageSource.FromFile ("about.png")
};
buttonsStackLayOut.Children.Add(doctorImage);
Run Code Online (Sandbox Code Playgroud)

如何填写所有屏幕尺寸?
您好我试图异步添加项目到列表但我不知道它是如何完成的,如果我使用的语法不正确,这就是我现在所拥有的:
我的看法:
await viewModel.getMessages();
list.ItemsSource = viewModel.Messages;
Run Code Online (Sandbox Code Playgroud)
我的视图模型:
public List<Message> Messages { get; set; }
public async Task getMessages()
{
await GetRemoteMessages();
}
private async Task GetRemoteMessages()
{
var remoteClient = new ChiesiClient();
var messages = await remoteClient.getMessages().ConfigureAwait(false);
//App.Database.
await SaveAll(messages).ConfigureAwait(false);
}
public async Task SaveAll(IEnumerable<Message> _messages)
{
foreach (var item in _messages)
{
await SaveMessage(item);
}
}
public async Task SaveMessage(Message item)
{
await Messages.Add(new Message // Cannot await void
{
Title = item.Title,
Description = item.Description,
Date = …Run Code Online (Sandbox Code Playgroud) 唯一让我想到的是,MULT((3 + 2)(5*4))= 100不是62?有人可以解释一下吗?
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#define ADD(x1, y1) x1 + y1
#define MULT(x1,y1) x1 * y1
int _tmain(int argc, _TCHAR* argv[])
{
int a,b,c,d,e,f,g;
a=2;
b=3;
c=4;
d=5;
e= MULT(ADD(a,b),MULT(c,d));
printf("the value of e is: %d\n", e);
system("PAUSE");
}
Run Code Online (Sandbox Code Playgroud) .net ×2
c# ×2
xamarin ×2
async-await ×1
asynchronous ×1
c ×1
c++ ×1
memorystream ×1
operators ×1