public MarkerEditor(DataMarker marker, HexView hexview) { InitializeComponent(); this.marker = marker; this.hexview = hexview; markerAtTextBox.Text = DataType.AddressToString(marker.Address); noteTextBox.Text = marker.Note; dataTypeComboBox.Items.AddRange(DataType.GetKnownDataTypes().ToArray()); dataTypeComboBox.SelectedIndex = dataTypeComboBox.FindString(marker.Type.Name); sizeNumericUpDown.Value = marker.NumBytes; sizeNumericUpDown.Enabled = marker.Type.VariableNumBytes; valueTextBox.Text = marker.Type.DecodeToString(hexview.GetDataAt(marker.Address)); }
private Bitmap DrawMarker(DataMarker marker, int address) { // draw marker to offscreen surface Point origin = new Point(0, 0); int mWidth = ColumnWidth * marker.NumBytes; Bitmap markerBmp = new Bitmap(mWidth, LineHeight); var mg = Graphics.FromImage(markerBmp); var markerRect = new Rectangle(origin, new Size(mWidth, LineHeight)); // highlighting and selection if (address == hoverAddress) { mg.FillRectangle(Brushes.DarkBlue, markerRect); } if (address == selectedAddress) { mg.FillRectangle(Brushes.DarkRed, markerRect); } // strings StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Near; mg.DrawString(marker.Type.DecodeToString(new DataFragment(address, fileBytes, address / 8, marker.NumBytes)), vFont, Brushes.White, markerRect, sf); origin.Y += 11; mg.DrawString(marker.Type.ShortName, tFont, Brushes.Orange, origin); // draw line var measure = mg.MeasureString(marker.Type.ShortName, tFont); origin.X += (int)measure.Width + hSpacing; origin.Y = LineHeight - 3; var point2 = new PointF(mWidth, origin.Y); mg.DrawLine(new Pen(Brushes.DarkOrange), origin, point2); return(markerBmp); }