[Mono-list] LockBits() on Mono 2.2?
Stifu
stifu at free.fr
Fri Mar 20 11:51:10 EDT 2009
I've been researching graphics optimizations lately... Unsafe code isn't the
only solution.
Here are 2 fully managed solutions:
http://www.codeproject.com/KB/GDI-plus/pointerlessimageproc.aspx
http://www.mycsharp.de/wbb2/thread.php?threadid=29667 (in German)
LKeene wrote:
>
> I actually intend to use LockBits() to draw to a memory bitmap
> pixel-by-pixel, rather than calling SetPixel() each time. Apparently that
> would be extremely slow from what I've read online. The only alternative
> to Set/GetPixel() seems to be declaring an unsafe block and using
> LockBits(). I'll try to test the mono LockBits() implementation today, but
> assuming that there is indeed a bug, does anyone have any other ideas of
> how to accomplish drawing to a memory Bitmap other than SetPixel()? I have
> a precomputed "Color[,]" that specifies the pixels colors.
>
> Thanks all.
> -L
>
>
>
> Stifu wrote:
>>
>> I intended to file the bug (and still do), but the program I have on my
>> hands as is requires you to open a game ROM file first, which is
>> something I didn't want people to bother with.
>> It's definitely on my todo list, though.
>>
>> In my program, I found a workaround (which is a little bit slower, but
>> that can't be noticed since it's blazing fast anyway). Here's that part
>> of my code:
>>
>> if (PlatformInformation.IsMono()) // HACK Clone bug workaround (Mono
>> only)
>> {
>> // Slower than simply cloning the tile bitmap, but works with Mono
>> // Cloning the tile bitmap returns a black tile with Mono
>> this.tileClipboardCache = new Bitmap(tile.Width, tile.Height,
>> PixelFormat.Format24bppRgb);
>> GdiDrawer.DrawTile(this.tileClipboardCache, 0, 0, tile);
>> }
>> else
>> {
>> this.tileClipboardCache = (Bitmap)tile.Bitmap.Clone();
>> }
>>
>>
>> Alan McGovern-2 wrote:
>>>
>>> Hey,
>>>
>>> Well, if there's a bug then please try to reduce the testcase as much as
>>> possible before submitting it. If you can't it's still worth filing a
>>> bug
>>> and giving as much detail as you can.
>>>
>>> If its working on .NET but not Mono that's not a good sign. I was
>>>> afraid of something like this.
>>>
>>>
>>> If there is an issue with a specific method, there are generally other
>>> ways
>>> of accomplishing exactly the same task. Sometimes all you need to do is
>>> use
>>> a different overload of the same method. For example here are two
>>> alternate
>>> methods of copying a bitmap, both of which are probably higher
>>> performance
>>> and both are definitely less bug prone:
>>>
>>> http://msdn.microsoft.com/en-us/library/aa457087.aspx
>>>
>>> So if you do encounter any issues, please file bug reports so they can
>>> be
>>> dealt with for the next release.
>>>
>>> Alan.
>>>
>>>>
>>>>
>>>>
>>>> Stifu wrote:
>>>> >
>>>> > I found a certain GDI+ bug recently, and I *think* it's related to
>>>> > LockBits(). I'm not sure, and didn't report the bug as I couldn't
>>>> make a
>>>> > reduced test case yet. However, if you're interested, I can send you
>>>> my
>>>> > not-so-reduced test case so you can have a look.
>>>> >
>>>> > But to sum things up: I have a Bitmap, try to clone it, and the
>>>> cloned
>>>> > Bitmap is all black... while this works fine with .NET.
>>>> >
>>>> >
>>>> > LKeene wrote:
>>>> >>
>>>> >> Hello all, I have a general question regarding the use of LockBits()
>>>> (in
>>>> >> GDI+) for reading/writing to a bitmap. I'm using Mono 2.2 and am
>>>> >> targeting Windows, OSX and Linux. Any current issues concerning the
>>>> use
>>>> >> of LockBits()/UnlockBits() I should be aware of? Any nasty buggies I
>>>> >> should be on the lookout for? I found a few posts pertaining to this
>>>> but
>>>> >> they're not very current.
>>>> >>
>>>> >> Thanks eveyone.
>>>> >>
>>>> >> -L
>>>> >>
>>>> >
>>>> >
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/LockBits%28%29-on-Mono-2.2--tp22611389p22611603.html
>>>> Sent from the Mono - General mailing list archive at Nabble.com.
>>>>
>>>> _______________________________________________
>>>> Mono-list maillist - Mono-list at lists.ximian.com
>>>> http://lists.ximian.com/mailman/listinfo/mono-list
>>>>
>>>
>>> _______________________________________________
>>> Mono-list maillist - Mono-list at lists.ximian.com
>>> http://lists.ximian.com/mailman/listinfo/mono-list
>>>
>>>
>>
>>
>
>
--
View this message in context: http://www.nabble.com/LockBits%28%29-on-Mono-2.2--tp22611389p22622044.html
Sent from the Mono - General mailing list archive at Nabble.com.
More information about the Mono-list
mailing list