ハイライトストロークをpngとして保存しようとしています。私はこの作業をするためにUWPのためにwin2dを使用しています。 100%の不透明度のストロークでうまく動作しますが、DrawAsHighlighter = true;
を設定すると、保存されたpngは空白になり、完全に透明になります。ここでwin2D uwpはインクキャンバスにハイライトストロークを保存しません
は私のコードです:
private void SetHighLight()
{
InkDrawingAttributes attributes = new InkDrawingAttributes();
attributes.DrawAsHighlighter = true;
attributes.PenTip = PenTipShape.Rectangle;
attributes.Size = new Size(4, 10);
attributes.Color = currentColor;
SetAttribute(attributes);
}
private void GetCanvasRender(out CanvasRenderTarget renderTarget)
{
CanvasDevice device = CanvasDevice.GetSharedDevice();
renderTarget = new CanvasRenderTarget(device, (int)ink.ActualWidth, (int)ink.ActualHeight, 96);
using (var ds = renderTarget.CreateDrawingSession())
{
ds.Clear(Colors.Transparent); //I already tried to delete this but it doesn't change anything
ds.DrawInk(ink.InkPresenter.StrokeContainer.GetStrokes());
}
}
private async void SavePicture()
{
CanvasRenderTarget renderTarget;
Image img = new Image();
GetCanvasRender(out renderTarget);
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile noteFile = await storageFolder.CreateFileAsync(i.ToString() + ".png", CreationCollisionOption.ReplaceExisting);
using (var fileStream = await noteFile.OpenAsync(FileAccessMode.ReadWrite))
await renderTarget.SaveAsync(fileStream, CanvasBitmapFileFormat.Png, 1f);
img.Source = new BitmapImage(new Uri(storageFolder.Path + "/" + i++ + ".png"));
img.VerticalAlignment = VerticalAlignment.Stretch;
ContainerCanvas.Children.Add(img);
Canvas.SetTop(img, ScrollViewerContainer.VerticalOffset);
Canvas.SetZIndex(img, 5);
}
私はそれがためにハイライトのビジュアルツリーには存在しないかもしれない読んだが、私は本当にそれについてはよく分かりません。
ところで、色の不透明度を変更しようとすると(attributes.Color = Color.FromArgb(128, 255, 0, 0)
)、inkcanvasはアルファを適用しません、なぜですか?何か不足していますか?背景色で、その値を掛けているようだとして、蛍光ペンは、透明な背景の上に表示されていない
ds.Clear(Colors.White);
:
は、こんにちは、あなたの答えのための おかげで、私は背景を透明にする必要があります。さらに、白い背景では、もはや不透明度を見ることができません: '( – Kinemu
不透明な画像を受け取った後、完全に白い各ピクセルを取り除いた後、キャンバスのすべての非透明ピクセルをあなたが望む色(非不透明な色) – Dean
@Deanこの問題は、ラインのスムージングのために、このような画像が白以外の背景にレンダリングされたときに、ストロークの周りに白いアーチファクトが発生する可能性があります。キネム、私はあなたがハイライターを使用できるとは思わない。通常の描画にはカスタムブラシを作成するか、Win2Dで対応するインクの描画を自分で管理する必要があります。 – SebastianR