Also ich hatte auch Probleme damit. Das Image-Control musste erst einmal gerendert werden, danach passte die Größe. Ob das beim Canvas auch zutrifft, musst du mal probieren.
Gelöst habe ich das dann so:
Im FensterService:
Gelöst habe ich das dann so:
C#-Quellcode
- public BitmapSource SpektrumImageSource()
- {
- System.Windows.Size size = ServiceProvider.GetService<IMainWindowService>().GetSpektrumImageRenderSize();
- Bitmap bitmap;
- if (size.Width > 0 && size.Height > 0)
- {
- int w = (int)size.Width;
- bitmap = visuals.CreateSpectrumWave(Stream, (int)size.Width, (int)size.Height, Color.FromArgb(102, 102, 102), Color.FromArgb(30, 30, 30), Color.FromArgb(30, 30, 30), 2, true, true, true);
- }
- else
- {
- bitmap = visuals.CreateSpectrumWave(Stream, 10, 10, Color.FromArgb(102, 102, 102), Color.FromArgb(30, 30, 30), Color.FromArgb(30, 30, 30), 2, true, true, false);
- }
- if(bitmap == null)
- {
- return null;
- }
- return BitmapSourceFromImage(bitmap);
- }
Im FensterService: