[Mono-winforms-list] set_Value seems to be having a problem

Emery Conrad econrad at vt.edu
Wed Apr 19 10:31:10 EDT 2006


Peter,

It does appear that way... my default font comes out as "MS Sans Serif",
which I believe is related to the wine installation I have.... hmmm, guess I
need to look elsewhere to solve this!

Thanks,

Emery



On 4/18/06, Peter Dennis Bartok <peter at novonyx.com> wrote:
>
> Emery,
>
> that sample code returns 14 on my system, as it should. Maybe you have an
> issue with your font/fontconfig installation?
>
> Cheers,
> Peter
>
> -----Original Message-----
> From: "Emery Conrad" <econrad at vt.edu>
> To: "winforms" <mono-winforms-list at lists.ximian.com>
> Date: 18 April, 2006 14:58
> Subject: Re: [Mono-winforms-list] set_Value seems to be having a problem
>
>
> Okay,
>
> It appears there is an issue with the default font in Control.cs. In
> libgdiplus, in file font.c, in the function
> GdipGetFontHeightGivenDPI(...),
> the calls to GdipGetEmHeight(...) and GdipGetLineSpacing(...) both give 0
> as
> returns, from which the font height is set to 0/0... OOOPS. This is the
> source of the bad values in the ScrollBar code... The following source
> will
> give the erroneous value in a MessageBox.
>
> Emery
>
> ------------------------------------------
>
> using System;
> using System.IO;
> using System.Drawing;
> using System.Drawing.Drawing2D;
> using System.Windows.Forms;
>
> public class Test : Form
> {
>        private Test()
>        {
>                MessageBox.Show("Font.Height=" + Font.Height);
>        }
>
>        public static void Main(String[] args)
>        {
>                Test form = new Test();
>                Application.Run(form);
>        }
> }
>
> On 4/18/06, Emery Conrad <econrad at vt.edu> wrote:
> >
> > All, it appears the issue comes through ScrollBar.set_SmallChange =
> > Font.Height, which eventually goes back through Font.Height <--
> > Graphics.systemDpiY <-- Graphics.FromImage(new Bitmap(1,1)).DpiY <--
> > GDIPlus.GetImageGraphicsContext.. . I'm trying to find the bottom of the
> > rabbit hole...
> >
> > Who knows this code best... I'll keep trying to uncover it, but a
> pointer
> > would be nice! (I'm having fun hacking though...)
> >
> > Emery
> >
> >
> >
> > On 4/18/06, Emery Conrad <econrad at vt.edu> wrote:
> > >
> > > I've run into the same issue repeatedly over the last several
> iterations
> > > of releases... in 1.1.9.2 , this bug wasn't there. When I change the
> > > code to give the values of max and min for the scroll bar, they are
> both
> > > set
> > > to -214783648. Somewhere, one of the calculations (maybe thumb_area?)
> is
> > > off.
> > >
> > > I've just starting my digging into the ScrollBar code... probably
> > > someone else will figure this out before me!!
> > >
> > > Emery
> > >
> > >
> > >
> > > On 4/18/06, PFJ <paul at all-the-johnsons.co.uk> wrote:
> > > >
> > > > Hi,
> > > >
> > > > I have a small image viewer which has been working for quite a while
> > > > now. However, I've just come to run it and it throws up an error
> after
> > > > loading a jpeg
> > > >
> > > > Unhandled Exception: System.ArgumentException : '-214783648' not a
> > > > valid
> > > > value for 'Value'. 'Value' should be between 'Minimum' and 'Maximum'
> > > > <in 0x00163> System.Windows.Forms.ScrollBar:set_Value(Int32 value)
> > > >
> > > > The jpeg is a valid jpeg (displays in eye of gnome)
> > > >
> > > > Any ideas what is happening? Source code and throwback is attached.
> > > >
> > > > As always, I'm happy to BZ this and admit now that the problem could
> > > > either be in my head, on my machine, or not be anything at all
> because
> > > >
> > > > I'm a twit at times.
> > > >
> > > > mono compiled from source (svn) at about 10.30 British Summer Time
> > > >
> > > > TTFN
> > > >
> > > > Paul
> > > >
> > > > 8-->
> > > > /*
> > > > * ImageViewer.cs - Simple MDI-based image viewer.
> > > > *
> > > > * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
> > > > *
> > > > * This program is free software, you can redistribute it and/or
> modify
> > > > * it under the terms of the GNU General Public License as published
> by
> > > > * the Free Software Foundation, either version 2 of the License, or
> > > > * (at your option) any later version.
> > > > *
> > > > * This program is distributed in the hope that it will be useful,
> > > > * but WITHOUT ANY WARRANTY, without even the implied warranty of
> > > > * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > > > * GNU General Public License for more details.
> > > > *
> > > > * You should have received a copy of the GNU General Public License
> > > > * along with this program, if not, write to the Free Software
> > > > * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> MA  02111-1307
> > > >
> > > > USA
> > > > */
> > > >
> > > > using System;
> > > > using System.IO;
> > > > using System.Drawing;
> > > > using System.Drawing.Drawing2D;
> > > > using System.Windows.Forms;
> > > >
> > > > public class ImageViewer : Form
> > > > {
> > > >         private ImageViewer()
> > > >         {
> > > >                 MenuItem openMenuItem = new MenuItem("Open");
> > > >                 MenuItem quitMenuItem = new MenuItem("Quit");
> > > >                 MenuItem fileMenuItem =
> > > >                         new MenuItem("File", new MenuItem[]
> > > >                                 {openMenuItem, quitMenuItem});
> > > >                 MainMenu mainMenu = new MainMenu(new MenuItem[] {
> > > > fileMenuItem });
> > > >                 Menu = mainMenu;
> > > >
> > > >                 Size = new Size(600, 500);
> > > >                 Text = "DotGNU Image Viewer";
> > > >                 IsMdiContainer = true;
> > > >
> > > >                 openMenuItem.Click += new EventHandler(OpenClicked);
> > > >                 quitMenuItem.Click += new EventHandler(QuitClicked);
> > > >         }
> > > >
> > > >         private void OpenClicked(Object sender, EventArgs e)
> > > >         {
> > > >                 OpenFileDialog dialog = new OpenFileDialog();
> > > >                 dialog.Filter =
> > > >                         "All image files (*.bmp, *.jpg, *.png,
> *.gif,
> > > > *.ico, *.cur)" +
> > > >                         "|*.bmp;*.jpg;*.png;*.gif;*.ico;*.cur" +
> > > >                         "|BMP files (*.bmp)|*.bmp" +
> > > >                         "|JPEG files (*.jpg)|*.jpg" +
> > > >                         "|PNG files (*.png)|*.png" +
> > > >                         "|GIF files (*.gif)|*.gif" +
> > > >                         "|Icon files (*.ico)|*.ico" +
> > > >                         "|Cursor files (*.cur)|*.cur" +
> > > >                         "|All files (*.*)|*.*";
> > > >                 if(dialog.ShowDialog(this) == DialogResult.OK)
> > > >                 {
> > > >                         Bitmap image;
> > > >                         try
> > > >                         {
> > > >                                 image = new Bitmap( dialog.FileName
> );
> > > >                         }
> > > >                         catch(Exception)
> > > >                         {
> > > >                                 MessageBox.Show
> > > >                                         (String.Format ("Unknown
> image
> > > > format for \"{0}\"",
> > > >
> > > > dialog.FileName),
> > > >                                          "Error",
> > > > MessageBoxButtons.OK,
> > > > MessageBoxIcon.Hand);
> > > >                                 image = null;
> > > >                         }
> > > >                         if(image != null)
> > > >                         {
> > > >                                 ImageWindow window = new ImageWindow
> > > >                                         (dialog.FileName, image);
> > > >                                 window.MdiParent = this;
> > > >                                 window.Visible = true;
> > > >                         }
> > > >                 }
> > > >         }
> > > >
> > > >         private void QuitClicked(Object sender, EventArgs e)
> > > >         {
> > > >                 Close();
> > > >         }
> > > >
> > > >         protected override bool ProcessDialogKey(Keys keyData)
> > > >         {
> > > >                 if(keyData == (Keys.Control | Keys.O))
> > > >                 {
> > > >                         OpenClicked(this, EventArgs.Empty);
> > > >                         return true;
> > > >                 }
> > > >                 return base.ProcessDialogKey(keyData);
> > > >         }
> > > >
> > > >         public static void Main(String[] args)
> > > >         {
> > > >                 ImageViewer form = new ImageViewer();
> > > >                 Application.Run(form);
> > > >         }
> > > >
> > > > }
> > > >
> > > > internal class ImageWindow : Form
> > > > {
> > > >         private Image image;
> > > >
> > > >         public ImageWindow(String filename, Image image)
> > > >         {
> > > >                 this.image = image;
> > > >                 ClientSize = image.Size;
> > > >                 Text = Path.GetFileName(filename);
> > > >         }
> > > >
> > > >         protected override void OnPaint(PaintEventArgs args)
> > > >         {
> > > >                 args.Graphics.DrawImage(image, 0, 0);
> > > >         }
> > > >
> > > > }
> > > >
> > > >
> > > > Unhandled Exception: System.ArgumentException: '-2147483648' is not
> a
> > > > valid value for 'Value'. 'Value' should be between 'Minimum' and
> > > > 'Maximum'
> > > > in <0x00163> System.Windows.Forms.ScrollBar:set_Value (Int32 value)
> > > > in (wrapper remoting-invoke-with-check)
> > > > System.Windows.Forms.ScrollBar:set_Value (int)
> > > > in <0x00131> System.Windows.Forms.MdiClient:CalcHBar (Int32 left,
> > > > Int32
> > > > right, Int32 right_edge, Boolean vert_vis)
> > > > in <0x007d7> System.Windows.Forms.MdiClient:SizeScrollBars ()
> > > > in <0x0000a> System.Windows.Forms.MdiClient:FormLocationChanged
> > > > (System.Object sender, System.EventArgs e)
> > > > in (wrapper delegate-invoke)
> > > > System.MulticastDelegate:invoke_void_object_EventArgs
> > > > (object,System.EventArgs)
> > > > in <0x0002e> System.Windows.Forms.Control:OnLocationChanged
> > > > (System.EventArgs e)
> > > > in <0x0016a> System.Windows.Forms.Control:UpdateBounds (Int32 x,
> Int32
> > > > y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight)
> > > > in <0x00149> System.Windows.Forms.Control:UpdateBounds ()
> > > > in <0x00375> System.Windows.Forms.Control:WndProc
> > > > (System.Windows.Forms.Message m)
> > > > in <0x0000d> System.Windows.Forms.ScrollableControl:WndProc
> > > > (System.Windows.Forms.Message m)
> > > > in <0x0000d> System.Windows.Forms.ContainerControl:WndProc
> > > > (System.Windows.Forms.Message m)
> > > > in <0x00370> System.Windows.Forms.Form:WndProc
> > > > (System.Windows.Forms.Message m)
> > > > in <0x00014>
> System.Windows.Forms.Control+ControlNativeWindow:WndProc
> > > > (System.Windows.Forms.Message m)
> > > > in <0x0011e> System.Windows.Forms.NativeWindow:WndProc (IntPtr hWnd,
> > > > Msg
> > > > msg, IntPtr wParam, IntPtr lParam)
> > > > in <0x00013> System.Windows.Forms.XplatUIX11:SendMessage (IntPtr
> hwnd,
> > > > Msg message, IntPtr wParam, IntPtr lParam)
> > > > in <0x0024e> System.Windows.Forms.XplatUIX11:SetVisible (IntPtr
> > > > handle,
> > > > Boolean visible)
> > > > in <0x0001a> System.Windows.Forms.XplatUI:SetVisible (IntPtr handle,
> > > > Boolean visible)
> > > > in <0x0007d> System.Windows.Forms.Control:SetVisibleCore (Boolean
> > > > value)
> > > > in <0x0000f> System.Windows.Forms.Form:SetVisibleCore (Boolean
> value)
> > > > in <0x00013> System.Windows.Forms.Control:set_Visible (Boolean
> value)
> > > > in (wrapper remoting-invoke-with-check)
> > > > System.Windows.Forms.Control:set_Visible (bool)
> > > > in <0x00144> ImageViewer:OpenClicked (System.Object sender,
> > > > System.EventArgs e)
> > > > in (wrapper delegate-invoke)
> > > > System.MulticastDelegate:invoke_void_object_EventArgs
> > > > (object,System.EventArgs)
> > > > in <0x0001d> System.Windows.Forms.MenuItem:OnClick (
> System.EventArgse)
> > > > in <0x00010> System.Windows.Forms.MenuItem:PerformClick ()
> > > > in (wrapper remoting-invoke-with-check)
> > > > System.Windows.Forms.MenuItem:PerformClick ()
> > > > in <0x00377> System.Windows.Forms.MenuTracker:OnClick
> > > > (System.Windows.Forms.MouseEventArgs args)
> > > > in <0x00e61> System.Windows.Forms.Form:WndProc
> > > > (System.Windows.Forms.Message m)
> > > > in <0x00014>
> System.Windows.Forms.Control+ControlNativeWindow:WndProc
> > > > (System.Windows.Forms.Message m)
> > > > in <0x0011e> System.Windows.Forms.NativeWindow:WndProc (IntPtr hWnd,
> > > > Msg
> > > > msg, IntPtr wParam, IntPtr lParam)
> > > > in <0x00016> System.Windows.Forms.XplatUIX11:DispatchMessage
> > > > (System.Windows.Forms.MSG msg)
> > > > in <0x00015> System.Windows.Forms.XplatUI:DispatchMessage
> > > > (System.Windows.Forms.MSG msg)
> > > > in <0x005fe> System.Windows.Forms.Application:RunLoop (Boolean
> Modal,
> > > > System.Windows.Forms.ApplicationContext context)
> > > > in <0x00024> System.Windows.Forms.Application:Run
> > > > (System.Windows.Forms.Form mainForm)
> > > > in <0x00024> ImageViewer:Main (System.String [] args)
> > > > <--8
> > > >
> > > > --
> > > > "Logic, my dear Zoe, is merely the ability to be wrong with
> authority"
> > > > -
> > > > Dr Who
> > > >
> > > > _______________________________________________
> > > > Mono-winforms-list maillist  -   Mono-winforms-list at lists.ximian.com
> > > > http://lists.ximian.com/mailman/listinfo/mono-winforms-list
> > > >
> > >
> > >
> > >
> > > --
> > > Emery Conrad
> > > Department of Mathematics
> > > Virginia Tech
> > > 5076 Derring Hall
> > > Blacksburg, VA 24061-0406
> > > (540) 231-3324
> > >
> >
> >
> >
> > --
> > Emery Conrad
> > Department of Mathematics
> > Virginia Tech
> > 5076 Derring Hall
> > Blacksburg, VA 24061-0406
> > (540) 231-3324
> >
>
>
>
> --
> Emery Conrad
> Department of Mathematics
> Virginia Tech
> 5076 Derring Hall
> Blacksburg, VA 24061-0406
> (540) 231-3324
>
>


--
Emery Conrad
Department of Mathematics
Virginia Tech
5076 Derring Hall
Blacksburg, VA 24061-0406
(540) 231-3324
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-winforms-list/attachments/20060419/06ee8e6f/attachment-0001.html


More information about the Mono-winforms-list mailing list