Ich habe Bitmap aus einer Liste von RGBA Pixel erstellt:Bildskalierung und es bei 0,0 in WPF Positionierung
// create image and set image as source
Image BmpImg = new Image();
BmpImg.SetValue(Canvas.ZIndexProperty, 0);
BmpImg.Width = imageScaleWidth;
BmpImg.Height = imageScaleHeight;
BmpImg.Source = bmp;
I:
BitmapSource bmp = BitmapSource.Create(imageStrideInPixels, height, 96, 96, PixelFormats.Bgra32, null, imageData, imageStrideInPixels * pixelWidth);
ich ein Bild aus dem Bitmap dann erstellen dann fügen sie das Bild auf die Leinwand:
mycanvas.Width = imageScaleWidth;
mycanvas.Height = imageScaleHeight;
mycanvas.Children.Clear();
mycanvas.Children.Add(BmpImg);
Canvas.SetLeft(BmpImg, 0); // to set position (x,y)
Canvas.SetTop(BmpImg, 0);
Das Problem ist, dass es nicht zu imageScaleWidth und imageScaleHeight skaliert bekommen, und es wird in der Mitte der Leinwand angezeigt.
Hinweis, konnte ich dies in Java SWT tun:
imageData = imageData.scaledTo(imageScaleWidth, imageScaleHeight);
gc.drawImage(imageData, 0, 0);
Abgesehen davon ist 'imageStrideInPixels' ein ziemlich seltsamer Name für die Breite einer Bitmap, sind Sie sicher, dass die Verhältnisse' imageStrideInPixels/imageScaleWidth' und 'height/imageScaleHeight' gleich sind? Ansonsten sollte das Bild nicht nur skaliert, sondern auch gestreckt werden. Sie müssen dann 'BmpImg.Stretch = Stretch.Fill;' einstellen. – Clemens
Brauchst du die Leinwand eigentlich für irgendwas? –
komisch, wie dein _java_-Tag mich daran hindert, das zu sehen, ich frage mich, wie viele Leute du dadurch ausschließt ... –