コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
        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));
                }
            }
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        private void m_nextPage_btn_Click(object sender, EventArgs e)
        {
            int count = CustomFaceManager.GetItemCount();

            if ((m_pageIndex + 1) * LineItemCount * LineCount < count)
            {
                m_pageIndex++;
            }

            this.Invalidate();
        }
コード例 #5
0
        private void m_add_btn_Click(object sender, EventArgs e)
        {
            m_avoidclose = true;
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Multiselect = true;
            dlg.Filter      = "Images(*.gif,*.png,*.jpg)|*.gif;*.png;*.jpg|所有文件(*.*)|*.*";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                foreach (string file in dlg.FileNames)
                {
                    CustomFaceManager.AddCustomFace(file);
                }

                this.Invalidate();
            }
            m_avoidclose = false;
        }
コード例 #6
0
 protected override void OnFormClosed(FormClosedEventArgs e)
 {
     base.OnFormClosed(e);
     CustomFaceManager.Dispose();
 }