Пример #1
0
 public void RenderTo(GDISurface target, int SourceX, int SourceY, int Width, int Height, int DestX, int DestY)
 {
     NativeMethods.BitBlt(target.hDC, DestX, DestY, Width, Height, hDC, SourceX, SourceY, (int)GDIRop.SrcCopy);
 }
Пример #2
0
 public GDISurface(int width, int height, GDISurface surface)
 {
     Init(width, height, surface.hDC);
     Create();
 }
Пример #3
0
 public GDISurface(int width, int height, GDISurface surface)
 {
     Init(width, height, surface.hDC);
     Create();
 }
Пример #4
0
 public void RenderTo(GDISurface target, int x, int y)
 {
     RenderTo(target.hDC, x, y);
 }
Пример #5
0
 public void RenderTo(GDISurface target, int SourceX, int SourceY, int Width, int Height, int DestX, int DestY)
 {
     NativeMethods.BitBlt(target.hDC, DestX, DestY, Width, Height, hDC, SourceX, SourceY, (int) GDIRop.SrcCopy);
 }
Пример #6
0
 public void RenderTo(GDISurface target, int x, int y)
 {
     RenderTo(target.hDC, x, y);
 }
Пример #7
0
        private void SetFont(bool bold, bool italic, bool underline, GDISurface surface)
        {
            if (bold && italic && underline)
                surface.Font = GFX.FontBoldItalicUnderline;

            else if (bold && italic)
                surface.Font = GFX.FontBoldItalic;

            else if (bold && underline)
                surface.Font = GFX.FontBoldUnderline;

            else if (bold)
                surface.Font = GFX.FontBold;

            else if (italic && underline)
                surface.Font = GFX.FontItalicUnderline;

            else if (!italic && underline)
                surface.Font = GFX.FontUnderline;

            else if (italic)
                surface.Font = GFX.FontItalic;

            else if (true)
                surface.Font = GFX.FontNormal;
        }
Пример #8
0
        private void CreateWords(Element[] Elements)
        {
            var bbuff = new GDISurface(1, 1, this, false);

            _HasImageError = false;
            foreach (Element Element in Elements)
            {
                if (Element.TagName == "img")
                {
                    Element.words = new Word[1];

                    Element.words[0] = new Word();

                    Image img = null;

                    try
                    {
                        string SRC = GetAttrib("img", Element.Tag).ToLowerInvariant();
                        if (IsIndex(SRC))
                        {
                            int index = int.Parse(SRC);
                            img = ImageList.Images[index];
                        }
                        else if (SRC.StartsWith("http://")) //from url
                        {}
                        else if (SRC.StartsWith("file://")) // from file
                        {
                            img = Image.FromFile(SRC.Substring(7));
                        }
                        else //from file
                        {
                            img = Image.FromFile(SRC);
                        }
                    }
                    catch
                    {
                        img = new Bitmap(20, 20);
                        _HasImageError = true;
                    }

                    Element.words[0].Image = img;


                    Element.words[0].Element = Element;


                    if (img != null)
                    {
                        Element.words[0].Height = img.Height;
                        Element.words[0].Width = img.Width;
                        Element.words[0].ScreenArea.Width = img.Width;
                        Element.words[0].ScreenArea.Height = img.Height;
                    }
                }
                else
                {
                    string[] words = Element.Text.Split(' ');
                    Element.words = new Word[words.Length];
                    int i = 0;
                    foreach (string word in words)
                    {
                        Element.words[i] = new Word();
                        string tmp ;
                        Element.words[i].Element = Element;
                        if (i == words.Length - 1)
                        {
                            Element.words[i].Text = word;
                            tmp = word;
                        }
                        else
                        {
                            Element.words[i].Text = word + " ";
                            tmp = word + " "; //last space cant be measured , lets measure an "," instead
                        }
                        //SizeF size=g.MeasureString (tmp,Element.Font);
                        bbuff.Font = GetFont(Element.Font);
                        Size s = bbuff.MeasureTabbedString(tmp, 0);
                        Element.words[i].Height = s.Height;
                        Element.words[i].Width = s.Width - 0;
                        Element.words[i].ScreenArea.Width = Element.words[i].Width;
                        Element.words[i].ScreenArea.Height = Element.words[i].Height;
                        //	Element.words[i].Link =Element.Link ;

                        i++;
                    }
                }
            }

            bbuff.Dispose();
        }
Пример #9
0
        protected override void OnPaint(PaintEventArgs e)
        {
            SetAutoSize();
            //base.OnPaint (e);

            if (_HasImageError)
                CreateAll();

            var bbuff = new GDISurface(Width, Height, this, true);
            Graphics g = Graphics.FromHdc(bbuff.hDC);
            try
            {
                bbuff.FontTransparent = true;

                if (BackgroundImage != null)
                {
                    g.DrawImage(BackgroundImage, 0, 0, Width, Height);
                }
                else
                {
                    bbuff.Clear(BackColor);
                }
                int x = Margin;
                int y = Margin;
                for (int i = vScroll.Value; i < _Rows.Count; i++)
                {
                    var r = (Row) _Rows[i];
                    x = Margin;
                    r.Visible = true;
                    r.Top = y;
                    if (r.RenderSeparator)
                    {
                        Color c1 = Color.FromArgb(120, 0, 0, 0);
                        Brush b1 = new SolidBrush(c1);
                        g.FillRectangle(b1, 0, y, Width, 1);

                        Color c2 = Color.FromArgb(120, 255, 255, 255);
                        Brush b2 = new SolidBrush(c2);
                        g.FillRectangle(b2, 0, y + 1, Width, 1);

                        b1.Dispose();
                        b2.Dispose();


                        //bbuff.DrawLine (this.ForeColor,new Point (0,y),new Point (this.Width,y));
                    }

                    foreach (Word w in r.Words)
                    {
                        int ypos = r.Height - w.Height + y;

                        if (w.Image != null)
                        {
                            g.DrawImage(w.Image, x, y);
                            //bbuff.FillRect (Color.Red ,x,ypos,w.Width ,w.Height);
                        }
                        else
                        {
                            GDIFont gf;
                            if (w.Element.Link != null)
                            {
                                Font f = null;

                                FontStyle fs = w.Element.Font.Style;
                                if (w.Element.Link == _ActiveElement)
                                {
                                    if (_Link_UnderLine_Hover)
                                        fs |= FontStyle.Underline;

                                    f = new Font(w.Element.Font, fs);
                                }
                                else
                                {
                                    if (_Link_UnderLine)
                                        fs |= FontStyle.Underline;

                                    f = new Font(w.Element.Font, fs);
                                }

                                gf = GetFont(f);
                            }
                            else
                            {
                                gf = GetFont(w.Element.Font);
                            }

                            bbuff.Font = gf;
                            if (w.Element.Effect != TextEffect.None)
                            {
                                bbuff.TextForeColor = w.Element.EffectColor;

                                if (w.Element.Effect == TextEffect.Outline)
                                {
                                    for (int xx = -1; xx <= 1; xx++)
                                        for (int yy = -1; yy <= 1; yy++)
                                            bbuff.DrawTabbedString(w.Text, x + xx, ypos + yy, 0, 0);
                                }
                                else if (w.Element.Effect != TextEffect.None)
                                {
                                    bbuff.DrawTabbedString(w.Text, x + 1, ypos + 1, 0, 0);
                                }
                            }


                            if (w.Element.Link != null)
                            {
                                if (w.Element.Link == _ActiveElement)
                                {
                                    bbuff.TextForeColor = Link_Color_Hover;
                                }
                                else
                                {
                                    bbuff.TextForeColor = Link_Color;
                                }
                            }
                            else
                                bbuff.TextForeColor = w.Element.ForeColor;

                            bbuff.TextBackColor = w.Element.BackColor;
                            bbuff.DrawTabbedString(w.Text, x, ypos, 0, 0);
                        }

                        w.ScreenArea.X = x;
                        w.ScreenArea.Y = ypos;
                        x += w.Width;
                    }

                    y += r.Height + r.BottomPadd;
                    if (y > Height)
                        break;
                }
            }
            catch (Exception x)
            {
                Console.WriteLine(x.Message);
            }
            bbuff.RenderToControl(0, 0);
            bbuff.Dispose();
            g.Dispose();
        }