Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


oncle-bob

Member Since 08 Nov 2013
Offline Last Active Nov 19 2013 12:45 PM

Topics I've Started

SharpDX PrintControl creation problem

12 November 2013 - 07:32 AM

Hi,
 
I am using SharpDX 2.5 on Windows 7. I try to use PrintControl but it crashes on creation. I just don't know what to use as a TargetDocument??
 
Anyone has successfully used this API?
 
Here is where am at right now:
 
d2DFactory1 = new Factory1();
wicFactory2 = new ImagingFactory2();
            
// SwapChain description
var desc = new SwapChainDescription
    {
        BufferCount = 1,
        ModeDescription =
            new ModeDescription(ClientSize.Width, //Kernel.ViewManager.CurrentView.RenderingContext.Width,
                                ClientSize.Height, //Kernel.ViewManager.CurrentView.RenderingContext.Height,
                                new Rational(60, 1), Format.B8G8R8A8_UNorm),
        IsWindowed = true,
        OutputHandle = Handle,
        SampleDescription = new SampleDescription(1, 0),
        SwapEffect = SwapEffect.Discard,
        Usage = Usage.RenderTargetOutput
    };

// Create a D3D device and a swap chain
SharpDX.Direct3D11.Device.CreateWithSwapChain(
    DriverType.Hardware,
    DeviceCreationFlags.BgraSupport,
    new[] { FeatureLevel.Level_10_0 },
    desc,
    out d3DDevice, out dxgiSwapChain);

// Get a DXGI device interface from the D3D device.
using (var dxgiDevice = d3DDevice.QueryInterface<SharpDX.DXGI.Device>())
{
    d2DDevice = new SharpDX.Direct2D1.Device(d2DFactory1, dxgiDevice);
}

// Create a device context from the D2D device.
d2DContext = new DeviceContext(d2DDevice, DeviceContextOptions.None);

using (Surface dxgiSurface = dxgiSwapChain.GetBackBuffer<Surface>(0))
{
    var dpi = d2DFactory1.DesktopDpi;
    bitmap = new Bitmap1(d2DContext, dxgiSurface,
                            new BitmapProperties1(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied),
                                                dpi.Width, dpi.Height,
                                                BitmapOptions.Target | BitmapOptions.CannotDraw));
}

solidColorBrush = new SolidColorBrush(d2DContext, Color.Red);

// Initialize print job (WILL CRASH HERE)
printControl = new PrintControl(d2DDevice, wicFactory2, bitmap,
                                new PrintControlProperties
                                    {
                                        RasterDPI = 150.0f,
                                        // Use the default rasterization DPI for all unsupported Direct2D commands.
                                        FontSubset = PrintFontSubsetMode.Default,
                                        // Using the default font subset strategy.
                                        ColorSpace = ColorSpace.SRgb
                                        // Color space for vector graphics in Direct2D print control.
                                    });

 
Thanks

PARTNERS