private void ResetPreview() { // chargement de la miniature : on doit parcourir les 2 databases et afficher les perso checked Bitmap temp_image = new Bitmap(Cuts.GetAt(selectedRow).Thumbnail.Background.OriginalString); int width = temp_image.Width; int height = temp_image.Height; float sizeChar = width / 38.4F; Graphics g = Graphics.FromImage(temp_image); g.InterpolationMode = InterpolationMode.High; g.SmoothingMode = SmoothingMode.HighQuality; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; g.CompositingQuality = CompositingQuality.HighQuality; //create the outline of the text System.Drawing.FontFamily f = new System.Drawing.FontFamily("Arial"); SolidBrush drawBrush = new SolidBrush(System.Drawing.Color.White); System.Drawing.Pen pen = new System.Drawing.Pen(System.Drawing.Color.Black, 5); PointF drawPoint = new PointF(width / 4 - (TeamOne.TeamName.Length * sizeChar) / 2, height * 3 / 4); GraphicsPath p = new GraphicsPath(); //write team name 1 p.AddString( TeamOne.TeamName, // text to draw f, // or any other font family (int)System.Drawing.FontStyle.Regular, g.DpiY * sizeChar / 72, // em size drawPoint, // location where to draw text new StringFormat()); // set options here (e.g. center alignment) g.DrawPath(pen, p); g.FillPath(drawBrush, p); //write team name 2 drawPoint.X = temp_image.Width - width / 4 - (TeamTwo.TeamName.Length * sizeChar) / 2; GraphicsPath p2 = new GraphicsPath(); //write team name 1 p2.AddString( TeamTwo.TeamName, // text to draw f, // or any other font family (int)System.Drawing.FontStyle.Regular, g.DpiY * sizeChar / 72, // em size drawPoint, // location where to draw text new StringFormat()); // set options here (e.g. center alignment) g.DrawPath(pen, p2); g.FillPath(drawBrush, p2); //multiplicateur de position List <int> posTab = new List <int>(); // on vérifie une fois le tableau pour savoir combien de cases sont cochées for (int i = 0; i < DbCharOne.Count; i++) { if (DbCharOne[i].IsPlayed) { posTab.Add(i); Debug.Write(Cuts.GetAt(selectedRow).Thumbnail.TeamOne.DataBase[i].Name + ": "); Debug.WriteLine(Cuts.GetAt(selectedRow).Thumbnail.TeamOne.DataBase[i].IsPlayed); } } // on parcours la liste des cases cochées for (int i = 0; i < posTab.Count; i++) { Character temp_char = DbCharOne[posTab[i]]; int nb_char = posTab.Count; //afficher la miniature a gauche Bitmap char_picture = new Bitmap(temp_char.PictureUri.OriginalString); //mise a echelle int newWidth = (int)((char_picture.Width / (nb_char + 1)) * ((float)width / 1920)); int newHeight = (int)((char_picture.Height / (nb_char + 1)) * ((float)width / 1920)); Bitmap Smaller_char = new Bitmap(char_picture, new System.Drawing.Size(newWidth, newHeight)); //Smaller_char.MakeTransparent(); Rectangle rect = new Rectangle(width * (i + 1) / (2 + 2 * nb_char) - Smaller_char.Width / 2, height / 2 - (Smaller_char.Height) * 2 / 3, Smaller_char.Width, Smaller_char.Height); //image.WritePixels(rect, Data.Scan0, Data.Stride,100000); g.DrawImage(Smaller_char, rect); } posTab.Clear(); // on vérifie une fois le tableau pour savoir combien de cases sont cochées for (int i = 0; i < DbCharTwo.Count; i++) { if (DbCharTwo[i].IsPlayed) { posTab.Add(i); } } // on parcours la liste des cases cochées for (int i = 0; i < posTab.Count; i++) { Character temp_char = DbCharOne[posTab[i]]; int nb_char = posTab.Count; //afficher la miniature a gauche Bitmap char_picture = new Bitmap(temp_char.PictureUri.OriginalString); int newWidth = (int)((char_picture.Width / (nb_char + 1)) * ((float)width / 1920)); int newHeight = (int)((char_picture.Height / (nb_char + 1)) * ((float)width / 1920)); Bitmap Smaller_char = new Bitmap(char_picture, new System.Drawing.Size(newWidth, newHeight)); //Smaller_char.MakeTransparent(); Smaller_char.RotateFlip(RotateFlipType.RotateNoneFlipX); Rectangle rect = new Rectangle(width - (width * (i + 1) / (2 + 2 * nb_char)) - Smaller_char.Width / 2, height / 2 - (Smaller_char.Height) * 2 / 3, Smaller_char.Width, Smaller_char.Height); //image.WritePixels(rect, Data.Scan0, Data.Stride,100000); g.DrawImage(Smaller_char, rect); } //change pas grand chose g.Dispose(); IntPtr hBitmap = temp_image.GetHbitmap(); try { var img_src = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( hBitmap, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); WriteableBitmap wb = new WriteableBitmap(img_src); var imgs = new ImageSend(wb); Messenger.Default.Send(imgs); } finally { DeleteObject(hBitmap); } //change pas grand chose temp_image.Dispose(); }
private void ResetPreview(ImageSend imgs) { image = imgs.image; Preview.Source = image; }