public void DoShowClue(int col, int row, int?number, UiClueState clue, UiCellValue cell) { var width = _scaler.ImageWidth; var height = _scaler.ImageHeight; var x0 = width * Convert.ToSingle(col) / Convert.ToSingle(_cols); var x1 = width * Convert.ToSingle(col + 1) / Convert.ToSingle(_cols); var y0 = height * Convert.ToSingle(row) / Convert.ToSingle(_rows); var y1 = height * Convert.ToSingle(row + 1) / Convert.ToSingle(_rows); var p0 = Point.Round(_scaler.ImageToScreen(x0, y0)); var p1 = Point.Round(_scaler.ImageToScreen(x1, y1)); var rect = new Rectangle(p0.X, p0.Y, p1.X - p0.X, p1.Y - p0.Y); var fillBrush = cell == UiCellValue.Unknown ? _brushUnknown : cell == UiCellValue.Filled ? _brushFilled : _brushEmpty; var textBrush = clue == UiClueState.Used ? new SolidBrush(Color.DimGray) : cell == UiCellValue.Empty ? new SolidBrush(Color.Black) : new SolidBrush(Color.White); using (var g = panel1.CreateGraphics()) { g.FillRectangle(fillBrush, rect); g.DrawRectangle(_penClueBoundary, rect); if (number != null) { g.DrawString(number.ToString(), new Font(DefaultFont.Name, _scaler.Scale * 20), textBrush, rect, _clueFormat); } } }
public void LogShowClue(int col, int row, int?number, UiClueState clue, UiCellValue cell) => AddUiOverlayCommand(() => DoShowClue(col, row, number, clue, cell));