Exemple #1
0
    private static IntPtr BeginDraw(Bitmap bmp, Graphics graphics, int x1, int y1, int x2, int y2, bool dash, out int oldRop, out IntPtr img, out IntPtr oldpen)
    {
        var gHdc = graphics.GetHdc();
        var hdc  = CreateCompatibleDC(gHdc);

        graphics.ReleaseHdc(hdc);

        img = bmp.GetHbitmap();
        SelectObject(hdc, img);

        oldpen = IntPtr.Zero;
        if (dash)
        {
            var pen = CreatePen(PenStyle.PS_DOT, 1, 0);
            oldpen = SelectObject(hdc, pen);
        }
        oldRop = SetROP2(hdc, (int)BinaryRasterOperations.R2_NOTXORPEN);         // Switch to inverted mode. (XOR)

        SetGraphicsMode(hdc, (int)GraphicsMode.GM_ADVANCED);
        XFORM transform = graphics.Transform;

        SetWorldTransform(hdc, ref transform);

        return(hdc);
    }
 void Pack(BufferChunk chunk, XFORM aTrans)
 {
     //chunk += aTrans.eDx;
     //chunk += aTrans.eDy;
     //chunk += aTrans.eM11;
     //chunk += aTrans.eM12;
     //chunk += aTrans.eM21;
     //chunk += aTrans.eM22;
 }
Exemple #3
0
 public static void Pack(BufferChunk chunk, XFORM aTrans)
 {
     chunk += aTrans.eDx;
     chunk += aTrans.eDy;
     chunk += aTrans.eM11;
     chunk += aTrans.eM12;
     chunk += aTrans.eM21;
     chunk += aTrans.eM22;
 }
        //public XFORM WorldTransform
        //{
        //    get { return GetWorldTransform(); }

        //    set { SetWorldTransform(value); }
        //}

        //private XFORM GetWorldTransform()
        //{
        //    XFORM aTransform = new XFORM();
        //    bool result = GDI32.GetWorldTransform(DeviceContext, out aTransform);

        //    return aTransform;
        //}

        public override void SetWorldTransform(XFORM aTransform)
        {
            BufferChunk chunk = new BufferChunk(1024);

            chunk += GDI32.EMR_SETWORLDTRANSFORM;
            Pack(chunk, aTransform);

            PackCommand(chunk);
        }
Exemple #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="g"></param>
        /// <param name="useTransfrom"></param>
        public RadHdcWrapper(Graphics g, bool useTransfrom)
        {
            this.graphics = g;

            Region rg = g.Clip;

            this.clipRegion = rg.GetHrgn(g);
            rg.Dispose();

            this.useTransform = useTransfrom;
            if (this.useTransform)
            {
                Matrix m = g.Transform;
                transform = XFORM.FromMatrix(m);
            }
        }
 public unsafe static extern RegionHandle ExtCreateRegion(
     [In] ref XFORM lpXform,
     uint nCount,
     RGNDATA *lpRgnData);
 public static extern bool SetWorldTransform(
     DeviceContext hdc,
     [In] ref XFORM lpXform);
 public static extern IntPtr ExtCreateRegion(ref XFORM lpXform, int nCount, IntPtr lpRgnData);
Exemple #9
0
 public static extern bool SetWorldTransform(IntPtr DC, ref XFORM p2);
Exemple #10
0
        public static void DrawString(Graphics g, string text, Font font, Color color, Rectangle rect, Alignment alignment, VAlignment valignment, TextSplitting textSplitting, Ampersands ampersands)
        {
            if (g == null)
            {
                throw new ArgumentNullException("g");
            }
            if (text == null)
            {
                throw new ArgumentNullException("text");
            }
            if (font == null)
            {
                throw new ArgumentNullException("font");
            }

            if (ampersands == Ampersands.Display)
            {
                text = text.Replace("&", "&&");
            }

            float[] txValues = g.Transform.Elements;
            IntPtr  hClipRgn = g.Clip.GetHrgn(g);
            IntPtr  hDC      = g.GetHdc();

            Gdi.SelectClipRgn(hDC, hClipRgn);

            int   oldGraphicsMode = Gdi.SetGraphicsMode(hDC, 2);
            XFORM oldXForm        = new XFORM();

            Gdi.GetWorldTransform(hDC, ref oldXForm);

            XFORM newXForm = new XFORM();

            newXForm.eM11 = txValues[0];
            newXForm.eM12 = txValues[1];
            newXForm.eM21 = txValues[2];
            newXForm.eM22 = txValues[3];
            newXForm.eDx  = txValues[4];
            newXForm.eDy  = txValues[5];

            Gdi.SetWorldTransform(hDC, ref newXForm);

            try
            {
                IntPtr hFont    = font.ToHfont();
                IntPtr hOldFont = Gdi.SelectObject(hDC, hFont);

                try
                {
                    RECT r = new RECT(rect);
                    User.DrawTextFlags uFormat;

                    switch (textSplitting)
                    {
                    case TextSplitting.SingleLineEllipsis:
                        uFormat
                            = User.DrawTextFlags.DT_WORD_ELLIPSIS
                              | User.DrawTextFlags.DT_END_ELLIPSIS;
                        break;

                    case TextSplitting.MultiLine:
                        uFormat
                            = User.DrawTextFlags.DT_WORDBREAK;
                        break;

                    default:
                        throw new InvalidOperationException();
                    }

                    switch (alignment)
                    {
                    case Alignment.Left:
                        break;

                    case Alignment.Center:
                        uFormat
                            = User.DrawTextFlags.DT_CENTER;
                        break;

                    case Alignment.Right:
                        uFormat
                            = User.DrawTextFlags.DT_RIGHT;
                        break;

                    default:
                        throw new InvalidOperationException();
                    }
                    switch (valignment)
                    {
                    case VAlignment.Top:
                        break;

                    case VAlignment.Bottom:
                        uFormat |= User.DrawTextFlags.DT_BOTTOM | User.DrawTextFlags.DT_SINGLELINE;
                        break;

                    case VAlignment.Center:
                        uFormat |= User.DrawTextFlags.DT_VCENTER | User.DrawTextFlags.DT_SINGLELINE;
                        break;
                    }

                    uint bgr      = (uint)((color.B << 16) | (color.G << 8) | (color.R));
                    uint oldColor = Gdi.SetTextColor(hDC, bgr);

                    try
                    {
                        BackgroundMode oldBackgroundMode = Gdi.SetBkMode(hDC, BackgroundMode.TRANSPARENT);

                        try
                        {
                            User.DrawText(hDC, text, text.Length, ref r, uFormat);
                        }
                        finally
                        {
                            Gdi.SetBkMode(hDC, oldBackgroundMode);
                        }
                    }
                    finally
                    {
                        Gdi.SetTextColor(hDC, oldColor);
                    }
                }
                finally
                {
                    Gdi.SelectObject(hDC, hOldFont);
                    Gdi.DeleteObject(hFont);
                }
            }
            finally
            {
                if (oldGraphicsMode == 1)
                {
                    oldXForm.eM11 = 1;
                    oldXForm.eM12 = 0;
                    oldXForm.eM21 = 0;
                    oldXForm.eM22 = 1;
                    oldXForm.eDx  = 0;
                    oldXForm.eDx  = 0;
                }

                Gdi.SetWorldTransform(hDC, ref oldXForm);
                Gdi.SetGraphicsMode(hDC, oldGraphicsMode);

                g.ReleaseHdc(hDC);

                if (hClipRgn != IntPtr.Zero)
                {
                    g.Clip.ReleaseHrgn(hClipRgn);
                }
            }
        }
 public static extern bool SetWorldTransform(HDC hdc, ref XFORM xf);
 public static extern int SetWorldTransform(IntPtr tmp_hDC, ref XFORM lpXform);
 public static extern int ModifyWorldTransform(IntPtr tmp_hDC, ref XFORM lpXform, uint iMode);
 public static extern bool GetWorldTransform(Win32DCSafeHandle hdc, [In][Out] ref XFORM lpXform);
 public static extern bool GetWorldTransform(IntPtr hdc, [In][Out] ref XFORM lpXform);
Exemple #16
0
 public static extern bool GetWorldTransform(IntPtr hdc, [Out] out XFORM lpXform);
 public static extern bool GetWorldTransform(HDC hdc, out XFORM xf);
 public static extern bool ModifyWorldTransform(HDC hdc, ref XFORM xf, uint nMode);
Exemple #19
0
 private static extern int SetWorldTransform(IntPtr hdc, ref XFORM xForm);
Exemple #20
0
 public static extern int SetWorldTransform(HandleRef hdc, XFORM xform);
Exemple #21
0
 [DllImport("gdi32.dll")]                              public static extern bool   SetWorldTransform(HDC hdc, ref XFORM lpXform);
Exemple #22
0
 private static extern int ModifyWorldTransform(IntPtr hdc, ref XFORM xForm, int mode);
 public static extern int SetWorldTransform(HandleRef hdc, XFORM xform);
 public static extern bool CombineTransform(
     out XFORM lpxformResult,
     [In] ref XFORM lpxform1,
     [In] ref XFORM lpxform2);
 public static extern bool GetWorldTransform(
     DeviceContext hdc,
     out XFORM lpXform);
 static extern bool SetWorldTransform(IntPtr hdc, [In] ref XFORM lpXform);
 public static extern bool ModifyWorldTransform(
     DeviceContext hdc,
     [In] ref XFORM lpXform,
     WorldTransformMode iMode);
Exemple #28
0
 public static extern bool ModifyWorldTransform(IntPtr hdc, [In] ref XFORM lpXform, uint iMode);
Exemple #29
0
 internal static extern bool SetWorldTransform(Win32DCSafeHandle hdc, [In] ref XFORM lpXform);