public void LoadBitmapTag(HaloMap Map, int TagIndex) { map = Map; Map.OpenIO(); map.RawInformation.ExternalMaps.CreateIOs(); map.RawInformation.ExternalMaps.OpenIOs(); tagIndex = TagIndex; bi = BitmapFunctions.GetBitmapInfo(map, tagIndex); listView1.Items.Clear(); for (int i = 0; i < bi.bitmapList.Count; i++) { string[] items = new string[] { i.ToString(), bi.bitmapList[i].Height.ToString(), bi.bitmapList[i].Width.ToString(), $"0x{bi.bitmapList[i].RawLength:X}", bi.bitmapList[i].Format.ToString(), bi.bitmapList[i].Type.ToString() }; ListViewItem item = new ListViewItem(items) { Tag = i }; listView1.Items.Add(item); } if (listView1.Items.Count > 0) { listView1.FocusedItem = listView1.Items[0]; listView1_SelectedIndexChanged(null, null); } map.RawInformation.ExternalMaps.CloseIOs(); Map.CloseIO(); }
public Bitmap DeskewImage(Bitmap image, int type, int binarizeThreshold) { Size oldSize = image.Size; _internalBmp = BitmapFunctions.Resize(image, new Size(1000, 1000), true, image.PixelFormat); Binarize(_internalBmp, binarizeThreshold); return(Rotate(image, GetSkewAngle())); }
/// <summary> /// Tests whether the glyph height of the capital letter X using the selected font is larger than the default glyph height. /// </summary> /// <returns>Returns false if the user cancels the operation.</returns> private bool TestGlyphSize() { Grid testGrid = new Grid(); int fontSize = Math.Max(FontSettings.FontSize, FontSettings.KanjiFontSize); Run testRun = new Run { Text = "X", FontFamily = FontSettings.FontFamily, FontSize = fontSize, FontWeight = FontSettings.FontWeight, Foreground = Brushes.Red }; TextBlock testText = new TextBlock(testRun) { Margin = new Thickness(GlyphHorizontalMargin, 0, GlyphHorizontalMargin, 0), HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center }; testGrid.Children.Add(testText); testGrid.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); testGrid.Arrange(new Rect(testGrid.DesiredSize)); BitmapSource glyphBitmap = BitmapFunctions.CaptureScreen(testGrid, 96.0, 96.0); Rect innerRect = DetectInnerRectFromPixels(glyphBitmap, new Rect(0.0, 0.0, testGrid.ActualWidth, testGrid.ActualHeight)); //if (testGrid.ActualHeight > GlyphHeight) if (innerRect.Height > GlyphHeight) { int newGlyphHeight = (int)Math.Ceiling(innerRect.Height); string message = Properties.Resources.Error_Generation_GlyphSizeTooLargeMessage + Environment.NewLine + Environment.NewLine + string.Format(Properties.Resources.Error_Generation_GlyphSizeConfirmation, newGlyphHeight); var answer = MessageBox.Show( message, Properties.Resources.Error_Generation_GlyphSizeTooLargeTitle, MessageBoxButton.YesNo, MessageBoxImage.Information); if (answer == MessageBoxResult.No) { return(false); } else { GlyphHeight = newGlyphHeight; } } return(true); }
public override string ToString() { battleTag = BattleTag.ReadFromMemory(); duration = (int)timer.Elapsed.TotalSeconds; foreach (HeroPlayed hero in heroesPlayed) { if (hero.RolePlayed() == "tank") { startRating = startRatings.tank; endRating = currentRatings.tank; break; } else if (hero.RolePlayed() == "damage") { startRating = startRatings.damage; endRating = currentRatings.damage; break; } else if (hero.RolePlayed() == "support") { startRating = startRatings.support; endRating = currentRatings.support; break; } } if (AppData.settings.uploadScreenshot && playerListImage != null) { playerListImageBase64 = Convert.ToBase64String(BitmapFunctions.BitmapToBytes(BitmapFunctions.ReduceBitmapSize(playerListImage, 70))); } if (players.Count != 12) { players.Clear(); } return(JsonConvert.SerializeObject(this, Formatting.None)); }
private void AddInnerRect(string glyph, Grid glyphGrid, TextBlock innerText, double x, double y) { Rect innerRect; BitmapSource glyphBitmap = BitmapFunctions.CaptureScreen(glyphGrid, 96.0, 96.0); if (string.IsNullOrWhiteSpace(glyph) || glyphBitmap == null || !UseAccurateInnerRects) { double innerWidth = innerText.ActualWidth + SpacingAdjustment; if (innerWidth < 0) { innerWidth = 0; } innerRect = CreateInnerRect( x: x, y: y, outerHeight: OuterRects[glyph].Height, innerWidth: innerWidth, innerHeight: innerText.ActualHeight); } else { innerRect = DetectInnerRectFromPixels(glyphBitmap, OuterRects[glyph]); // Create new outer rect to keep horizontal margin constant OuterRects[glyph] = new Rect( innerRect.X - GlyphHorizontalMargin, OuterRects[glyph].Y, innerRect.Width + (GlyphHorizontalMargin * 2), OuterRects[glyph].Height); RectCanvas.Children.RemoveAt(RectCanvas.Children.Count - 1); CreateOuterRectangleForCanvas(glyph, OuterRects[glyph]); } /*if(inner.Height > DefaultGlyphHeight) * { * var answer = MessageBox.Show( * "The glyph height for the selected font is larger than the default (52 pixels).\n\n", * "Glyph Size Too Large"); * }*/ Brush rectBrush = Brushes.DarkViolet; Rect outer = OuterRects[glyph]; // Check if the inner rect is larger than the outer if (innerRect.Top < outer.Top || innerRect.Left < outer.Left || innerRect.Bottom > outer.Bottom || innerRect.Right > outer.Right) { if (!RectErrorMessageShown) { MessageBox.Show(Properties.Resources.Error_Generation_OverlappingBoundingRects, Properties.Resources.Error_Warning); RectErrorMessageShown = true; } // Resize the width of the inner rect to fit inside the outer if (innerRect.Right > outer.Right) { innerRect = new Rect( innerRect.X, innerRect.Y, innerRect.Width - (outer.Right - innerRect.Right), innerRect.Height); } rectBrush = Brushes.Red; } InnerRects.Add(glyph, innerRect); CreateInnerRectangleForCanvas(innerRect, rectBrush); }