On Wed, 2007-02-28 at 13:48 -0700, Eric Morgan wrote: > mmmmmm, open source. I'll give that a shot, thanks! > > Are there any license restrictions if I do that? Our code is not open > source, it's a commercial product. Should I just include author and > rights of that code within our source code via comments? > > I'm only vaguely familiar with the LGPL or GPL licenses...
Not a problem as the Mono class libraries are MIT X.11 licensed ;-) http://www.opensource.org/licenses/mit-license.php and it's one of the easiest license to understand. Have fun :-) > This may be a good opportunity to ask about that, but I feel that it > should be a separate thread. > > Thanks! > > Eric > > On 2/28/07, Sebastien Pouliot <[EMAIL PROTECTED]> wrote: > Eric, > > There's no alternative to p/invoke - even if you used 2.0 you > would only > be calling a method hiding some platform specific p/invoke > calls. > > Now using 2.0 may not be an option for you, but that doesn't > prevent you > from using CopyFromScreen. Why ? because it's open source :-) > > Just create your own library using Mono source code for > CopyFromScreen > (and the code it depends on) or include the source in your own > project. > > Sebastien > > On Wed, 2007-02-28 at 13:27 -0700, Eric Morgan wrote: > > The problem isn't resizing - I don't have an original bitmap > to > > resize. The problem is that I have a control that I want a > screenshot > > of. So, I'm trying to create a Bitmap from whatever is > appearing in > > the control. > > > > I pass the control in, then I call control.CreateGraphics(); > > System.Drawing.Graphics g1 = c.CreateGraphics (); > > > > Then, with the resulting graphics object, I try to create a > new > > bitmap. > > Bitmap MyImage = new Bitmap(w, h, g1); > > > > The thing is, this bitmap is blank, unless I paste back in > that BitBlt > > code. I can't figure out how to get a new bitmap from a > graphics > > object, without BitBlt(). > > > > Sebastien - Using 2.0 isn't an option, unfortunately. > > > > Is there any alternative from P/Invoking in this case? > > > > Thanks for all the help! > > > > Eric > > > > On 2/28/07, Abe Gillespie <[EMAIL PROTECTED]> wrote: > > It looks like you're just taking the image and > resizing it to > > show in > > the dialog. You really should not have to go into > native OS > > libraries > > to do so. Does this site help? > > > > > http://www.peterprovost.org/archive/2003/05/29/516.aspx > > > > -Abe > > > > On 2/28/07, Eric Morgan <[EMAIL PROTECTED]> wrote: > > > I'm not too sure how to get a Bitmap object from a > graphics > > object. From > > > all I've read, I just hear that you have to deal > with device > > contexts. I'm > > > not too familiar with it, but BitBlt seems to be > the way to > > do that. What > > > would I need to do to get that bitmap created with > what > > appears in the > > > control using 100% .NET so it can run in > mono? Here's a > > snippet of code. > > > > > > > > > > > > [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")] > > > private static extern bool BitBlt( > > > IntPtr hdcDest, // handle to > destination DC > > > int nXDest, // x-coord of destination > > upper-left corner > > > int nYDest, // y-coord of > destination > > upper-left corner > > > int nWidth, // width of destination > rectangle > > > int nHeight, // height of destination > rectangle > > > IntPtr hdcSrc, // handle to source > DC > > > int nXSrc, // x-coordinate of source > > upper-left corner > > > int nYSrc, // y-coordinate of source > > upper-left corner > > > System.Int32 dwRop // raster > operation code > > > ); > > > > > > > > > public static Bitmap > PerformCapture(Control c, int > > maxWidth, int > > > maxHeight) > > > { > > > try > > > { > > > int w = c.ClientRectangle.Width; > > > int h = c.ClientRectangle.Height; > > > > > > w = System.Math.Min(w, maxWidth); > > > h = System.Math.Min(w, maxHeight); > > > > > > System.Drawing.Graphics g1 = > > > c.CreateGraphics();//this.CreateGraphics(); > > > Bitmap MyImage = new Bitmap(w, h, > g1); > > > System.Drawing.Graphics g2 = > > > System.Drawing.Graphics.FromImage (MyImage); > > > IntPtr dc1 = g1.GetHdc(); > > > IntPtr dc2 = g2.GetHdc(); > > > BitBlt(dc2, 0, 0, w, h, dc1, 0, > 0, > > 13369376); > > > g1.ReleaseHdc(dc1); > > > g2.ReleaseHdc(dc2); > > > > > > //Separate dialog to display the image. If I > comment out > > the BitBlt code, > > > it just appears blank. > > > > Library.Windows.Dialogs.ScreenCaptureDlg > > > dlg = new > > > Library.Windows.Dialogs.ScreenCaptureDlg > (MyImage); > > > dlg.ShowDialog(); > > > > > > return MyImage; > > > } > > > catch(Exception error) > > > { > > > //our exception handling library. > > > > Library.Common.ErrMsg.Err( error ); > > > throw error; > > > > > > } > > > } > > > > > > > > > > > > On 2/28/07, Abe Gillespie > <[EMAIL PROTECTED]> wrote: > > > > Are you P/Invoking for performance? Why not > just use the > > GDI .Net API? > > > > > > > > -Abe > > > > > > > > On 2/28/07, Eric Morgan <[EMAIL PROTECTED]> wrote: > > > > > Hi all, > > > > > > > > > > Is there a good way to capture screens or > something > > similar in mono? In > > > our > > > > > .NET application, we have custom controls, and > we > > basically create a > > > > > graphics object from it, make a new bitmap, > then do a > > bitblt to get it > > > into > > > > > the bitmap. This requires a P/Invoke into > gdi32.dll , > > which obviously > > > blows > > > > > up in mono. Is there a good way to do this > using > > mono? Some other > > > library > > > > > maybe? > > > > > > > > > > I've tried installing wine and using the > gdi32.dll.so > > that comes with > > > it, > > > > > but I don't know if I'm using it correctly or > not. It > > can find the > > > library, > > > > > but it gives a SIGSEGV while trying to execute > the > > bitblt operation. > > > Seemed > > > > > like kind of a hack, and I didn't really > expect it to > > work... Do I need > > > > > other libraries along with the gdi32.dll.so ? > > > > > > > > > > Any advice is appreciated. Thanks. > > > > > > > > > > Eric Morgan > > > > > Renegade Geophysics > > > > > 303-661-0400, x2 > > > > > > > > > > > _______________________________________________ > > > > > Mono-list > maillist - [email protected] > > > > > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > > > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > Mono-list maillist - [email protected] > > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > > > > > > > > > _______________________________________________ > > Mono-list maillist - [email protected] > > http://lists.ximian.com/mailman/listinfo/mono-list > > > > _______________________________________________ > Mono-list maillist - [email protected] > http://lists.ximian.com/mailman/listinfo/mono-list _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
