首页 > 其他分享 >winform在窗体初始化时绘制控件一直绘制不上问题

winform在窗体初始化时绘制控件一直绘制不上问题

时间:2022-11-25 15:44:26浏览次数:53  
标签:控件 ai 不上 jsonNote 窗体 myFont 绘制

  最近在做一个功能,大概是:点击单元格,然后打开一个窗体,在窗体打开时,要把单元格中的内容绘制在窗体的picturebox控件上。

  我在构造函数,load、actived、shown等事件中都绘制试了,但窗体打开后还是没有绘制的内容。又试了网上说的重写onpaint方法,在里面绘制也不行;以及条用picturebox的Invalidate强制重绘,但发现pic控件可以了,其他控件都空白了。

最后直接上成功的代码:

  在控件的paint事件里绘制,需要注意的是绘制的画板要用事件里带的那个参数。

//绘制已有的轴线
        private void picView_Paint(object sender, PaintEventArgs e)
        {
            try
            {
                graView = e.Graphics;
                BllJsonNote jsonNote = BllNote.GetCellJsonNote(_cell.Owner, _cell.Col, _cell.Row, _cell.Sheet);
                if (jsonNote != null && jsonNote.U != null && jsonNote.U.Count > 0)
                {
                    if (jsonNote.U.ContainsKey("axisinfo"))
                    {
                        if (!string.IsNullOrEmpty(jsonNote.U["axisinfo"]))
                        {
                            string str = jsonNote.U["axisinfo"];
                            string axisJson = StringHelper.GetValueFromBase64(str);
                            AxisInfo ai = JsonConvertHelper<AxisInfo>.DeserializeJsonNote(axisJson);
                            if (ai != null)
                            {
                                myFont = ai.AxisFont;
                                txtAxis.Font = myFont;
                                //设置画笔
                                if (myFont.Style == FontStyle.Bold)
                                {
                                    pen = new Pen(Color.Black, 2);
                                }
                                //设置画圈的直径和每行的高度
                                circelWidth = myFont.Size + 12;
                                yUnit = myFont.Size + 14;
                                switch (ai.HorAlignMent)
                                {
                                    case "left":
                                        rbHorizon_left.Checked = true;
                                        break;
                                    case "right":
                                        rbHorizon_right.Checked = true;
                                        break;
                                }
                                switch (ai.VerAlignMent)
                                {
                                    case "top":
                                        rbVertical_top.Checked = true;
                                        break;
                                    case "bottom":
                                        rbVertical_bottom.Checked = true;
                                        break;
                                }
                                txtAxis.Text = ai.AxisText;
                            }
                        }
                    }
                }

                graView = this.picView.CreateGraphics();
            }
            catch (Exception ex)
            {
                Log4NetHelper.ErrorLog(this.GetType(), "绘制出错," + ex.Message + Environment.NewLine + ex.StackTrace);
            }
        }

 

标签:控件,ai,不上,jsonNote,窗体,myFont,绘制
From: https://www.cnblogs.com/dachuang/p/16925370.html

相关文章