Quantcast
Channel: Extended WPF Toolkit™ Community Edition
Viewing all articles
Browse latest Browse all 4964

Commented Unassigned: Copy image of Xceed DataGridControl to bitmap [21900]

$
0
0
0
down vote
favorite


I'm using Xceed WPF Toolkit (Community Edition) DataGridControl, and I would like to create a bitmap from the control (either to put on the clipboard or save to a png).

I have tried using a RenderBitmapTarget, but it will only copy the control as it is rendered on the screen (my grid is bigger than the screen).

My RenderBitmapTarget code looks like this:

```
RenderTargetBitmap rtb = new RenderTargetBitmap((int)control.ActualWidth, (int)control.ActualHeight, 96, 96, PixelFormats.Pbgra32);
rtb.Render(control);
PngBitmapEncoder png = new PngBitmapEncoder();
png.Frames.Add(BitmapFrame.Create(rtb));
MemoryStream stream = new MemoryStream();
png.Save(stream);
Image image = Image.FromStream(stream);
```

I've tried specifying a larger size (both in the RenderTargetBitmap constructor, and specifying new width/height for the control, but both just yielded the same image on a larger canvas.

Any thoughts?
Comments: ** Comment from web user: dhope **

By using the following code:

tempWidth = myControl.ActualWidth;
tempHeight = myControl.ActualHeight;

myControl.Width = double.NaN;
myControl.Height = double.NaN;

myControl.UpdateLayout();

RenderTargetBitmap rtb = new RenderTargetBitmap((int)myControl.ActualWidth, (int)myControl.ActualHeight, 96, 96, PixelFormats.Pbgra32);

rtb.Render(myControl);


PngBitmapEncoder pbe = new PngBitmapEncoder();
pbe.Frames.Add(BitmapFrame.Create(rtb));
MemoryStream stream = new MemoryStream();
pbe.Save(stream);
image = (System.Drawing.Bitmap)System.Drawing.Image.FromStream(stream);

CEGrid.Width = tempWidth;
CEGrid.Height = tempHeight;

I get the control rendered at the correct size, but the cells that were off the screen are blank. How do it get it to update those cells?


Viewing all articles
Browse latest Browse all 4964

Trending Articles