저는 Windows 8 응용 프로그램 개발을 처음 접했습니다. 로컬 스토리지에 비트 맵 이미지로 그리드를 저장해야하는 응용 프로그램을 개발 중입니다. 쓰기 가능한 비트 맵을 사용하여 시도했지만 솔루션을 얻지 못했습니다.격자를 비트 맵으로 저장하는 방법 Windows의 로컬 저장소에있는 이미지 8
그런 다음 샘플을 검색했지만 '불가능'이라고 대답했습니다. 그러나 일부 답변에서 나는 그것을 찾을 수있는 'WriteableBitmapEx'을 사용하여 발견했습니다. 하지만이 라이브러리를 사용하여이를 구현하는 방법을 모르겠습니다. 어느 누구라도 그 사실을 알고 있으면 저에게 답장하십시오.
미리 감사드립니다.
EDITED.
<Canvas Background="Cyan" Name="panelcanvas" Margin="47.5,57,327.5,153"
Width="200"
Height="400">
<Image Name="maskimg"
Height="100" Width="220"/>
<ScrollViewer ZoomMode="Enabled" Name="scroll">
<Image Name="img" Stretch="Fill" Canvas.Top="15"
Height="400" Width="200" Source="mask_image.png">
<Image.RenderTransform>
<CompositeTransform x:Name="Composite_Transform"></CompositeTransform>
</Image.RenderTransform>
</Image>
</ScrollViewer>
</Canvas>
<Image Name="maskimg2" HorizontalAlignment="left" Width="200"
Height="400"/>
<Image Name="maskimg3" HorizontalAlignment="Right" Width="200"
Height="400"/>
C# 코드.
var destBmp = BitmapFactory.New((int)panelcanvas.ActualWidth, (int)panelcanvas.ActualHeight);
foreach (var child in panelcanvas.Children)
{
var img = child as Image;
if (img != null)
{
var sourceMask = ((BitmapImage)img.Source);
var sourceUriMask = sourceMask.UriSource;
Uri imageUri = new Uri(strMask.ToString());
var srcBmp = await new WriteableBitmap(1, 1).FromContent(imageUri);
if (srcBmp != null)
{
var x = Canvas.GetLeft(img);
var y = Canvas.GetTop(img);
destBmp.Blit(new Rect(x, y, srcBmp.PixelWidth, srcBmp.PixelHeight), srcBmp, new Rect(0, 0, srcBmp.PixelWidth, srcBmp.PixelHeight));
}
}
await WriteableBitmapToStorageFile(destBmp, FileFormat.Jpeg);
private async Task<StorageFile> WriteableBitmapToStorageFile(WriteableBitmap WB, FileFormat fileFormat)
{
string FileName = "MyFile.jpeg";
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
var file = await localFolder.CreateFileAsync(FileName, CreationCollisionOption.ReplaceExisting);
using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoderGuid, stream);
Stream pixelStream = WB.PixelBuffer.AsStream();
byte[] pixels = new byte[pixelStream.Length];
await pixelStream.ReadAsync(pixels, 0, pixels.Length);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore,
200,
200,
0,
0,
pixels);
await encoder.FlushAsync();
}
return file;
}
당신이 키/값 쌍을 저장하는'localStorage' 뜻은, 또는 일반적으로 로컬 컴퓨터에 저장을 의미합니까? 이것이 XAML/WinRT "Windows Store"응용 프로그램인지 또는 데스크탑 WPF 응용 프로그램인지 확인할 수 있습니까? – Dai
storageFolder (Windows 전화의 격리 보관소와 같은). 이것은 XAMl/WinRt windows store 응용 프로그램입니다. 나는 Windows 태블릿이 응용 프로그램을 개발하고 있습니다. – user3274778
WriteableBitmapEx 비트 맵 이미지에 많은 확장 메서드가있는 비트 맵 이미지를 만듭니다. 따라서이 라이브러리를 사용하여 writablebitmap을 만들고 그 메소드를 탐색하면 얻을 수 있습니다. – loop