Silverlight 布局面板加控件方法

添加文字的方法:

 TextBlock txt = new TextBlock();
                    txt.Text = tmc;
                    txt.FontSize = 12;
                    txt.Foreground = t_brush;
                    txt.FlowDirection = FlowDirection.LeftToRight;
                    //
                    double tt_angle = this.GetAngle(eb, ee);
                    double t_angle = tt_angle;
                    t_angle = t_angle * 180.0 / this.PI;
                    if (t_angle >= 360)
                    {
                        t_angle -= 360;
                    }
                    t_angle = 360 - t_angle;  //修正用于顺时针rotate方向
                    //RotateTransform  //SkewTransform
                    RotateTransform rt = new RotateTransform();
                    rt.Angle = t_angle;  //顺时针rotate方向
                    rt.CenterX = 0;
                    rt.CenterY = 0;
                    txt.RenderTransform = rt;
                    txt.RenderTransformOrigin = new Point(t_atP.X, t_atP.Y);
                    //
                    txt.SetValue(Canvas.LeftProperty, t_atP.X);
                    txt.SetValue(Canvas.TopProperty, t_atP.Y);
                    //
                    this.cRoot.Children.Add(txt);
                    //----

添加直线的方法:

Brush t_brush=new SolidColorBrush(this.LineColor);
            //
            double p_sx = this.wfView.MapToScreen_X((double)rt_t.SX);
            double p_sy = this.wfView.MapToScreen_Y((double)rt_t.SY);
            //
            double p_ex = this.wfView.MapToScreen_X((double)rt_t.EX);
            double p_ey = this.wfView.MapToScreen_Y((double)rt_t.EY);
            //
            PointD eb = new PointD();
            eb.X = (double)rt_t.SX;
            eb.Y = (double)rt_t.SY;
            PointD ee = new PointD();
            ee.X = (double)rt_t.EX;
            ee.Y = (double)rt_t.EY;
            //画线(用面对象只添加两个点来完成)
            Polygon t_line = new Polygon();
            //
            t_line.Points.Add(new Point(p_sx, p_sy));
            t_line.Points.Add(new Point(p_ex, p_ey));
            //
            t_line.Points.Add(new Point(p_sx, p_sy));
            //
            //t_line.StrokeThickness = 2;
            //t_line.Opacity = 0.5;
            //t_line.Width = 2;
            t_line.Stroke = t_brush;
            t_line.Fill = t_brush;
            //
            this.cRoot.Children.Add(t_line);  

添加图片和矩形框的方法:

BitmapImage img = new BitmapImage();
                    img.CreateOptions = BitmapCreateOptions.None;
                    string path = "/AppSilverlight;component/WorkFlowNodeImageDir/png/" + t;
                    Stream s = Application.GetResourceStream(new Uri(path, UriKind.Relative)).Stream;
                    img.SetSource(s);
                    //
                    Image ui_img = new Image();
                    ui_img.Source = img;
                    //计算节点左上角坐标
                    double top_x = (int)p_x;
                    top_x = top_x - img.PixelWidth / 2;
                    double top_y = (int)p_y;
                    top_y = top_y - img.PixelHeight / 2;
                    //
                    ui_img.SetValue(Canvas.LeftProperty, top_x);
                    ui_img.SetValue(Canvas.TopProperty, top_y);
                    this.cRoot.Children.Add(ui_img);
                    //
                    //画节点外边框
                    {
                        Rectangle rect = new Rectangle();
                        rect.Stroke = t_Brush;
                        rect.Fill = new SolidColorBrush(Colors.Transparent);
                        rect.SetValue(Canvas.LeftProperty, top_x);
                        rect.SetValue(Canvas.TopProperty, top_y);
                        rect.Width = img.PixelWidth;
                        rect.Height = img.PixelHeight;
                        this.cRoot.Children.Add(rect);
                    }
                }
                //添加节点名称
                {   //画节点名称
                    string actmc = rt_act.ACTMC;
                    TextBlock txt = new TextBlock();
                    txt.Text = actmc;
                    txt.FontSize = 12;
                    txt.Foreground = t_Brush;
                    char[] longLine = actmc.ToCharArray();
                    //修正节点名称显示位置
                    double t_txtLen = longLine.Length / 2.0;
                    t_txtLen = t_txtLen * txt.FontSize;
                    //
                    double x = p_x - t_txtLen;
                    double y = p_y + 24 + 0;
                    txt.SetValue(Canvas.LeftProperty, x);
                    txt.SetValue(Canvas.TopProperty, y);
                    //
                    this.cRoot.Children.Add(txt);
时间: 2024-10-11 06:47:21

Silverlight 布局面板加控件方法的相关文章

silverlight中常用的控件

一.布局控件 Canvas面板是一种很基础的布局面板,它支持对其中的控件采用绝对坐标定位.Canvas.Top和Canvas.Left.Canvas.ZIndex附加属性:如果指定了两个控件相对于父容器Canvas同样的边距,则后面声明的控件父覆盖前面声明的控件.这时我们可以使用Canvas.ZIndex属性来改变它们的显示顺序. StackPanel是一种简单的布局面板,它支持用行或列的方式来定位其中包含的控件.StackPanel 常用于安排页面上的一个很小的 UI 部分.默认情况下,Ori

C#控件方法及属性大全,望补充

C#控件及常用设计整理 1.窗体 常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体. (2) WindowState属性: 用来获取或设置窗体的窗口状态. 取值有三种: Normal (窗体正常显示). Minimized (窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示). (3)StartPosition属性:用来获取或设置运行时窗体的起始位置. (4)Text属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的

java android布局里的控件值 反射绑定给实体类,实体类绑定给控件,表单提交绑定很有用

注意了:根据实际情况,添加实体里字段的类型,控件类型的判断才可使用.这里控件只有TextView EditText 实体类字段只有String int类型,带值的控件添加tag ,值和实体类的字段值一致 package ice.ui.service; import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import jav

WPF查找子控件和父控件方法[转帖]

WPF查找子控件和父控件方法 一.查找某种类型的子控件,并返回一个List集合 public List<T> GetChildObjects<T>(DependencyObject obj, Type typename) where T : FrameworkElement { DependencyObject child = null; List<T> childList = new List<T>(); for (int i = 0; i <= V

bcb安装控件方法汇总

1.BCB 菜单: Project->Options->Packages->Add[喝小酒的网摘]http://blog.const.net.cn/a/8496.htm如果是BCB6: 选择安装的文件夹 yb_base_c6.bpl 和 yb_comm_c6.bpl, 然后按"打开"按钮如果是BCB5: 选择安装的文件夹 yb_base_c5.bpl 和 yb_comm_c5.bpl, 然后按"打开"按钮2.BCB 菜单: Project->

IE下JS接受ActiveX控件方法

1.常规写法 <SCRIPT type="text/javascript" FOR="activexID" EVENT="onXXXevent()" > // js 处理具体内容. </SCRIPT> 当acitveX控件 onXXXevent()事件被触发时,调用此方法. 2.注意事项 这种方法只是IE下支持,且要注意 <SCRIPT type="text/javascript" FOR=&qu

在WPF中使用WinForm控件方法

1.      首先添加对如下两个dll文件的引用:WindowsFormsIntegration.dll,System.Windows.Forms.dll. 2.      在要使用WinForm控件的WPF窗体的XAML文件中添加如下内容: 即: xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" xmlns:wfi ="clr-namespace:System.Windo

添加自定义UITableView头部控件方法

1.创建一个继承UITableViewHeaderFooterView的类,拥有一个模型 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame, 子控件要添加到contentView中) 进行子控件一次性的属性设置(有些属性只需要设置一次, 比如字体\固定的图片) - (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier { if (se

LISTCTRL控件方法

以下未经说明,listctrl默认view风格为report ------------------------------------------------------------------------------- 1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标 LVS_LIST: 显示一列带有小图标的item LVS_REPORT: 显示item详细资料 直观的理解:windows资源管理器,"查看&q