Beispiel #1
0
        int IHeightAdaptable.CalcHeight(GraphicsCache cache, int width)
        {
            CustomRepositoryItem cri = Item as CustomRepositoryItem;

            if (cri.ControlType == null)
            {
                return(this.CalcMinHeight(cache.Graphics));
            }
            return(cri.DrawControl.Height);
        }
        void DrawEditors(List <BaseEdit> editors, ControlGraphicsInfoArgs info, CustomRepositoryItem cri)
        {
            foreach (BaseEdit editor in editors)
            {
                RepositoryItem ri = cri.ControlRepositories[editor.EditorTypeName];
                ri.Assign(editor.Properties);
                BaseEditViewInfo bevi = ri.CreateViewInfo();
                bevi.EditValue = editor.EditValue;
                Rectangle rec = editor.Bounds;

                rec.X += info.ViewInfo.Bounds.X;
                rec.Y += info.ViewInfo.Bounds.Y;

                bevi.CalcViewInfo(info.Graphics, MouseButtons.Left, new Point(0, 0), rec);
                ControlGraphicsInfoArgs cinfo = new ControlGraphicsInfoArgs(bevi, info.Cache, info.ViewInfo.Bounds);
                BaseEditPainter         bp    = ri.CreatePainter();
                try
                {
                    bp.Draw(cinfo);
                }
                catch { }
            }
        }
        public override void Draw(ControlGraphicsInfoArgs info)
        {
            base.Draw(info);

            CustomControlViewInfo vi  = info.ViewInfo as CustomControlViewInfo;
            CustomRepositoryItem  cri = vi.Item as CustomRepositoryItem;

            if (cri.ControlType == null)
            {
                return;
            }
            (cri.DrawControl as IEditValue).EditValue = vi.EditValue;
            cri.DrawControl.Bounds = info.Bounds;
            Bitmap bm = new Bitmap(info.Bounds.Width, info.Bounds.Height);

            cri.DrawControl.DrawToBitmap(bm, new Rectangle(0, 0, bm.Width, bm.Height));
            info.Graphics.DrawImage(bm, info.Bounds.Location);

            List <BaseEdit> editors = new List <BaseEdit>();

            editors = EditorFinder.FindEditors(cri.DrawControl);
            DrawEditors(editors, info, cri);
        }
 static CustomControl()
 {
     CustomRepositoryItem.Register();
 }