private void PaintBox_MouseMove(object sender, MouseEventArgs e) { if (IsMouseDwon == true) // if mouse is clicked/// { if (LastPoint != null) { g.DrawLine(pencel, LastPoint, Point_Initialization(Img, e.X, e.Y)); g.SmoothingMode = SmoothingMode.AntiAlias; PaintBox.Invalidate(); // refresh picturebox// LastPoint = Point_Initialization(Img, e.X, e.Y); //update last point position// } } }
private void EditImageFileRightButtonClick(object sender, EventArgs e) { string newFilename; bool usePngFile; Bitmap uIImage; Bitmap bitmap; int size; OpenFileDialog openDialog = new OpenFileDialog(); openDialog.Filter = "BMP and PNG files|*.bmp;*.png|BMP files|*.bmp|PNG files|*.png"; openDialog.CheckFileExists = true; openDialog.ReadOnlyChecked = false; openDialog.Title = "Open Image File"; openDialog.InitialDirectory = Path.GetDirectoryName(_filename); openDialog.FileName = Path.GetFileName(_filename); if (openDialog.ShowDialog() == DialogResult.OK) { bool saveToBmp = false; newFilename = openDialog.FileName; usePngFile = Settings.Instance.AllowPngImages && Path.GetExtension(openDialog.FileName).Equals(".png", StringComparison.OrdinalIgnoreCase); //UIImage will automatically convert to 32 - bit alpha image bitmap = null; uIImage = AlphaBitmap.TryAlphaBitmapFromFile(newFilename, (_flags & ImageFlags.HighContrast) != 0); try { bitmap = uIImage.Clone(new Rectangle(new Point(), uIImage.Size), uIImage.PixelFormat); //bitmap = Bitmap.FromHbitmap(uIImage.GetHbitmap()); // this code do not work, because it will not produce a ARGB bitmap if (!Addons.StartsText(_image.Owner.Directory, newFilename)) { newFilename = Path.Combine(_image.Owner.Directory, "Res"); Addons.ForceDirectories(newFilename); newFilename = Path.Combine(newFilename, Path.GetFileName(openDialog.FileName)); if (usePngFile) { File.Copy(openDialog.FileName, newFilename, true); } else { saveToBmp = true; } //newFilename = Path.ChangeExtension(newFilename, ".bmp"); //bitmap.Save(newFilename, ImageFormat.Bmp); //@ changed, don't override the same file //It seems to be a better solution when we copy the file when it is a .bmp with BM Header than bitmap.Save //If the file from openDialog is the same as newFilename we can delete the openDialog file first //or jump around the bitmap.Save //we have to do some checks if the choosen file has a BM Header //or is it possible for the WindowsRibbon, that we can use png files ? } if (!usePngFile && !Path.GetExtension(newFilename).Equals(".bmp", StringComparison.OrdinalIgnoreCase)) { saveToBmp = true; newFilename = Path.ChangeExtension(newFilename, ".bmp"); } if (saveToBmp) { AlphaBitmap.SetTransparentRGB(bitmap, Color.LightGray.ToArgb() & 0xffffff); bitmap.Save(newFilename, ImageFormat.Bmp); //@ changed, don't override the same file } EditImageFile.Text = _image.Owner.BuildRelativeFilename(newFilename); _image.Source = EditImageFile.Text; ClearBitmap(_bitmap); Graphics canvas = Graphics.FromImage(_bitmap); if (uIImage.PixelFormat != PixelFormat.Format32bppArgb) { uIImage.MakeTransparent(); } canvas.DrawImage(uIImage, new Point((64 - uIImage.Width) / 2, (64 - uIImage.Height) / 2)); canvas.Dispose(); PaintBox.Invalidate(); size = Math.Max(bitmap.Width, bitmap.Height); if ((_flags & ImageFlags.Large) != 0) { size = size / 2; } if (size <= 16) { ComboBoxMinDpi.SelectedIndex = 0; } else if (size <= 20) { ComboBoxMinDpi.SelectedIndex = 2; } else if (size <= 24) { ComboBoxMinDpi.SelectedIndex = 3; } else { ComboBoxMinDpi.SelectedIndex = 4; } } finally { uIImage.Dispose(); bitmap.Dispose(); } } }