AppBarButton 아이콘을 만드는 방법을 알고 싶습니다. 2 행의 텍스트가 있습니다. 나는 윈도우 캘린더처럼 만들고 싶어 :Windows Phone 8.1 AppBarButton 아이콘 2 행의 텍스트 사용
3
A
답변
2
AppBarButton가 아이콘에서 텍스트 또는 임의의 XAML을 표시하지 않습니다. 글꼴, 비트 맵 또는 경로의 기호 여야합니다. 이와 같은 캘린더 디스플레이의 경우 비트 맵을 사용하는 것이 가장 좋습니다.
아마도 366 개의 아이콘을 미리 생성하고 싶지 않으므로 RenderTargetBitmap을 사용하여 즉시 만들 수 있습니다. "ButtonImageMaster"을 가정하는 것은 XAML 날과 달과 calendarButton와 스 니펫 AppBarButton입니다 :
실버, 당신은 '스크린 샷을 생성하기 위해 (ImageSource
에서 파생)
WriteableBitmap
의
WriteableBitmap(FrameworkElement element, Transform transform)
생성자를 사용할 수 있습니다 WP 8.1에
RenderTargetBitmap rtb = new RenderTargetBitmap();
await rtb.RenderAsync(ButtonImageMaster);
IBuffer pixelBuffer = await rtb.GetPixelsAsync();
string fileName = "calIcon.png";
StorageFile calIconFile = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(fileName,CreationCollisionOption.ReplaceExisting);
using (IRandomAccessStream stream = await calIconFile.OpenAsync(FileAccessMode.ReadWrite))
{
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Straight,
(uint)rtb.PixelWidth,
(uint)rtb.PixelHeight,
DisplayInformation.GetForCurrentView().LogicalDpi,
DisplayInformation.GetForCurrentView().LogicalDpi,
pixelBuffer.ToArray());
await encoder.FlushAsync();
}
BitmapIcon icon = new BitmapIcon();
icon.UriSource = new Uri("ms-appdata:///temp/"+fileName);
calendarButton.Icon = icon;
0
메모리 렌더링 된 프레임 워크 요소 '. 그런 다음 비트 맵 아이콘으로 설정할 수 있습니다.
Silverlight 8.1 앱에서이 기능을 사용하고 싶지만 Silverlight가 RenderTargetBitmap을 지원하지 않는 것 같습니다. 이 작업을 수행 할 수있는 다른 방법이 있습니까? –
렌더링 코드가 잘 작동하지만 AppBarButton.Icon으로 표시하려고하면 http://i.imgur.com/de73cTo.png가 표시됩니다. 내가 어떻게 고칠 수 있는지 생각해? – Vil
코드가 업데이트되었습니다. 전화는 BitmapIcon의 UriSource가 원시 경로가 아닌 ms- 프로토콜 URI 여야합니다. –