ImageTools を使用して画像を生成しようとしていますが、コードが機能し、画像が正常に作成されます...ただし、画像を作成する前にユーザー入力がある場合のみ!
たとえば、新しいサブで画像を生成しようとすると、画像が作成されますが、画像ではなく、キャンバスのテキスト ボックス コントロールのみが含まれます (私のコントロールはテキスト + 画像で構成されます)。画像は作成されていますが、部分的なコンテンツしかレンダリングしていません。
ページにボタンを配置し、ボタン クリック イベント ハンドラーから画像を生成すると、画像は正しく生成されます。
それで、私はここで何が間違っていますか?また、ユーザー入力なしで (つまり、アプリの起動時に) 画像を生成するにはどうすればよいですか?
ImageTools、FWIW の代わりに WriteableBitmap を使用してもまったく同じ結果が得られます。
キャンバスとテキスト/画像要素を使用してスタックパネルを作成し、標準コードを使用して分離ストレージ内のファイルに画像をレンダリングします。ユーザー入力後にすべてが完全に機能するため、コードのどの部分を提供すればよいかわかりません...基本的には変更されていないサンプルコードを使用しています。
コード部分 (これはすべて私の MainPage.XAML.VB にあります):
Public Sub New()
InitializeComponent()
' some code commented out while debugging - not relevant here
SetupHubTiles() ' this is the method that sets up the images (see below)
End Sub
SetupHubTiles メソッドは、次のメソッドに対して複数の呼び出しを行います。
Public Sub CreateHubTile(background As StackPanel, tileImage As String, tiletoupdate As HubTile)
Dim isoStoreTileImage = String.Format("isostore:{0}", tileImage)
'Create a bitmapImage to IsolatedStorage.
Using store As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication()
'Tile image's Height * Width are 173 * 173.
Dim bitmap = New WriteableBitmap(173, 173)
'Render a bitmap from StackPanel.
bitmap.Render(background, New TranslateTransform())
Dim stream = store.CreateFile(tileImage)
bitmap.Invalidate()
bitmap.SaveJpeg(stream, 173, 173, 0, 100)
stream.Close()
End Using
SetHubTileImage(tileImage, tiletoupdate) ' this is what sets a control on the MainPage to display the generated image
End Sub
最後に、ボタン クリック ハンドラー (使用しているコードが別のアプリで正常に動作するため、実装したばかりですが、そのアプリは画像を作成する前に常にユーザー入力を取得するため、2 つのアプリの唯一の違いであると考えました)
Private Sub StartButton_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles StartButton.Click
SetupHubTiles()
End Sub
ご覧のとおり、実行されるコードは同じですが、コンストラクターで直接実行すると、ボタン クリック ハンドラーから実行する場合とは異なる結果が得られます。
目標は、これらの画像を実行時に (ユーザーの操作なしで) 生成して UI で使用することです。
これを行うためにいくつかの異なる方法を試しましたが、常に同じ結果が得られます。テキストと画像があるはずなのに、テキストだけで画像が生成されます。他のアプリでも同じ方法を使用していますが、唯一の違いは、他のアプリがアプリの起動後すぐに画像を作成しないことです。これが問題になる可能性があります。
イメージの作成に使用しているコントロールの場所/タイプを変更しても、違いはないようです。