private void CustomFaceForm_Click(object sender, EventArgs e) { MouseEventArgs me = (MouseEventArgs)e; int bx = ((me.X - StartX)) / CustomFaceManager.IconSize; int by = ((me.Y - StartY)) / CustomFaceManager.IconSize; int index = by * LineItemCount + bx; if (bx < LineItemCount && by < LineCount && index < LineCount * LineItemCount) { index += m_pageIndex * LineItemCount * LineCount; m_item = CustomFaceManager.GetItem(index); if (SelectItem != null) { SelectItem(this, e); } if (me.Button == MouseButtons.Left) { Close(); } } }
protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); int count = CustomFaceManager.GetItemCount(); int iconSz = CustomFaceManager.IconSize; for (int j = 0; j < LineCount; j++) { for (int i = 0; i < LineItemCount; i++) { int idx = j * LineItemCount + i; idx += m_pageIndex * LineItemCount * LineCount; if (idx >= count) { return; } Image img = CustomFaceManager.GetItem(idx).Icon; e.Graphics.DrawImage(img, StartX + i * iconSz, StartY + j * iconSz); e.Graphics.DrawRectangle(Pens.Black, new Rectangle(StartX + i * iconSz, StartY + j * iconSz, iconSz, iconSz)); } } }
protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); int bx = ((e.X - StartX)) / CustomFaceManager.IconSize; int by = ((e.Y - StartY)) / CustomFaceManager.IconSize; int index = by * LineItemCount + bx; if (bx < LineItemCount && by < LineCount && index < LineCount * LineItemCount) { index += m_pageIndex * LineItemCount * LineCount; if (m_pageIndex == index) { return; } CustomFaceItem item = CustomFaceManager.GetItem(index); if (item != null) { if (m_preview_pbx.Image != null) { m_preview_pbx.Image.Dispose(); } string path = Path.Combine(DataManager.GetCustomFaceFolderPath(), item.Filename); Bitmap img = new Bitmap(path); m_preview_pbx.Image = img; m_preview_idx = index; m_preview_pbx.Visible = true; if (img.Width < m_preview_pbx.Width && img.Height < m_preview_pbx.Height) { m_preview_pbx.SizeMode = PictureBoxSizeMode.CenterImage; } else { m_preview_pbx.SizeMode = PictureBoxSizeMode.Zoom; } if (bx > LineItemCount / 2) { m_preview_pbx.Location = new Point(0, 0); } else { m_preview_pbx.Location = new Point(this.Size.Width - m_preview_pbx.Size.Width, 0); } } } else { m_preview_idx = -1; m_preview_pbx.Visible = false; } }