こんにちは、画像が正しくレンダリングされない理由がわかりません。ここで xaml:
<Canvas x:Name="CanvasLayout" Grid.Row="0" Grid.Column="0"
VerticalAlignment="Center" Width="{Binding ActualWidth, ElementName=LayoutRoot, Mode=OneWay}"
Height="{Binding ActualHeight, ElementName=LayoutRoot, Mode=OneWay}">
<Border Background="Red" BorderBrush="Yellow" BorderThickness="3" Margin="0" >
<Image x:Name="ImgChosenPhoto" Stretch="UniformToFill" Canvas.ZIndex="1" />
</Border>
</Canvas>
ここで、画像をレンダリングする方法
private async void FilterPage_Loaded(object sender, RoutedEventArgs e)
{
System.Windows.Size screenSize = ResolutionHelper.ScreenResolution;
Windows.Foundation.Size photoSize = await GetImageSizeAsync();
double scale = 1;
if (this.Orientation == PageOrientation.PortraitUp)
{
if (photoSize.Width > photoSize.Height)
{
scale = screenSize.Width / photoSize.Width;
}
else
{
scale = screenSize.Height / photoSize.Height;
}
}
this._dimensionsPhoto.Width = (photoSize.Width * scale) - 6;
this._dimensionsPhoto.Height = (photoSize.Height * scale) - 6;
//this.ImgChosenPhoto.Height = (int)this._dimensionsPhoto.Height;
//this.ImgChosenPhoto.Width = (int)this._dimensionsPhoto.Width;
WriteableBitmap writeableBitmap = new WriteableBitmap((int)this._dimensionsPhoto.Height, (int)this._dimensionsPhoto.Width);
await App.PhotoModel.RenderBitmapAsync(writeableBitmap);
this.ImgChosenPhoto.Source = writeableBitmap;
}
public async Task RenderBitmapAsync(WriteableBitmap bitmap)
{
using (BufferImageSource source = new BufferImageSource(_buffer))
using (FilterEffect effect = new FilterEffect(source) { Filters = this._components })
using (WriteableBitmapRenderer renderer = new WriteableBitmapRenderer(effect, bitmap))
{
await renderer.RenderAsync();
bitmap.Invalidate();
}
}
ここに結果(私のlumia 925からのスクリーンショット):
なんで?マージンを設定していません...何も...
最初に、画像が右側にレンダリングされていることに気付くことができます...そして黄色の境界線が見えません...そのため、画像コントロールが画面からオーバーフローしているようです... 2番目のものでは、右側の境界線が端にありません画面の..約50pxを逃します...
助けてくれてありがとう...