ho creato BitmapSource da un elenco di pixel RGBA:Scala di un'immagine e posizionandolo a 0,0 in WPF
BitmapSource bmp = BitmapSource.Create(imageStrideInPixels, height, 96, 96, PixelFormats.Bgra32, null, imageData, imageStrideInPixels * pixelWidth);
Ho quindi creare un'immagine dal BitmapSource:
// 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 quindi aggiungere l'immagine sulla tela:
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);
il problema è che non è sempre scalata a imageScaleWidth e imageScaleHeight, e viene visualizzato a metà della tela.
nota, sono stato in grado di fare questo in Java SWT da:
imageData = imageData.scaledTo(imageScaleWidth, imageScaleHeight);
gc.drawImage(imageData, 0, 0);
Oltre che 'imageStrideInPixels' è un nome piuttosto strano per la larghezza di una bitmap, sei sicuro che le proporzioni' imageStrideInPixels/imageScaleWidth' e 'height/imageScaleHeight' sono uguali? Altrimenti l'immagine non dovrebbe essere ridimensionata, ma anche allungata. Potrebbe quindi essere necessario impostare 'BmpImg.Stretch = Stretch.Fill;'. – Clemens
Hai davvero bisogno della tela per qualcosa? –
divertente come il tuo tag _java_ mi ha impedito di vederlo, mi chiedo quante persone in più stai escludendo da questo ... –