我能问一下你的wheelAxe变量是什么么???
我在本机调试你的这段代码不能通过。
我已经自己定义了Bitmap aIamge,但是真的不知道wheelAxe是什么,能说清楚一些么???

解决方案 »

  1.   

    请参见:
    ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfSystemDrawingBitmapClassctorTopic.htmBitmap的构造函数中有这样的
    从指定的文件初始化 Bitmap 类的新实例。
    public Bitmap(string);我对你的程序作了些改动,并在窗体上加了个picturnBox
    关键代码如下:
    string bmpName = @"c:\wheelh.bmp";
    ....
    aImage = new Bitmap(bmpName);
    pictureBox1.Image = aImage;
    ....这样就可以成功打开bmp;
      

  2.   

    你这里的 问题是怎么用流来初始化一个bitMap,我试了几次,都没有把流的值指定!!!
    我也挺关心这个问题:怎么用流来初始化一个bitMap!!!!
    只能帮你up了!!!!
      

  3.   

    以下代码希望对您有所帮助:
    private void button1_Click(object sender, System.EventArgs e)
    {
    OleDbConnection myConn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Environment.CurrentDirectory+"\\db1.mdb");
    myConn.Open();
    OleDbDataAdapter thisAdapter= new OleDbDataAdapter("SELECT * FROM mypict",myConn);
    OleDbCommandBuilder thisBuilder=new OleDbCommandBuilder(thisAdapter);
    DataSet thisDataSet=new DataSet();
    thisAdapter.Fill(thisDataSet,"mypict");
    DataRow thisRow=thisDataSet.Tables["mypict"].NewRow();
    thisRow["id"]=1;
    //保存图片
    if(pictureBox1.Image !=null)
    {
    //新建一个内存流
    MemoryStream ms = new MemoryStream ();
    //把图片内容存到内存流中去
    pictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Bmp );
    //把图片内容存到文件流中去
    FileStream fs=new FileStream(Application.StartupPath+"\\ok.bmp",FileMode.Create);
    pictureBox1.Image.Save(fs,System.Drawing.Imaging.ImageFormat.Bmp );
    //把内存流中的内容按字节读入数组
    byte[] myData = new Byte[ms.Length ];
    ms.Position = 0;
    ms.Read (myData,0,Convert.ToInt32(ms.Length ));
    thisRow["photo"] = myData;
    ms.Close();
    }
    thisDataSet.Tables["mypict"].Rows.Add(thisRow);
    thisAdapter.Update(thisDataSet,"mypict");
    myConn.Close();
    } private void button2_Click(object sender, System.EventArgs e)
    {
    OleDbConnection myConn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Environment.CurrentDirectory+"\\db1.mdb");
    myConn.Open();
    OleDbDataAdapter thisAdapter= new OleDbDataAdapter("SELECT * FROM mypict",myConn);
    OleDbCommandBuilder thisBuilder=new OleDbCommandBuilder(thisAdapter);
    DataSet thisDataSet=new DataSet();
    thisAdapter.Fill(thisDataSet,"mypict");
    //方法一通过文件流
    // byte[] data =(byte[])thisDataSet.Tables["mypict"].Rows[0]["photo"];
    // FileStream myfilestream=new FileStream(Application.StartupPath+"\\monkey.bmp",FileMode.Create);
    // myfilestream.Write(data,0,data.Length);
    // myfilestream.Close();
    // pictureBox2.Image=new Bitmap(Application.StartupPath+"\\monkey.bmp");
    //方法二通过内存流
    byte[] data =(byte[])thisDataSet.Tables["mypict"].Rows[0]["photo"];
    MemoryStream ms = new MemoryStream();
    ms.Write(data,0,data.Length);
    pictureBox2.Image=new Bitmap(ms);
    ms.Close();
    myConn.Close();
    }
    欢迎您使用Microsoft技术,分享知识,共同进步!
      

  4.   

    我这里写的是一个类似金山影霸2002左边的的一个旋转控件。现在我吧全部的代码帖出来,编译的时候没有问题,但调用此控件的时候出现我说的问题。求助!using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Windows.Forms;
     
    namespace WheelControl
    {
    /// <summary>
    /// WheelCtrl 的摘要说明。
    /// </summary>
    /// 
    public class WheelEventHandlerArgs : EventArgs
    {
    private int nX;
    private int nY;
     
    public WheelEventHandlerArgs(int x, int y)
    {
    this.nX = x;
    this.nY = y ;
    }
    public int X
    {
    get
    {
    return nX;
    }
    }
    public int Y
    {
    get
    {
    return nY;
    }
    }
     
    }
     
    public class WheelCtrl : System.Windows.Forms.UserControl
    {
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    //private System.ComponentModel.Container components = null;
     
    public enum Orientation {XAxe, YAxe};
    public delegate void WheelEventHandler(object sender, WheelEventHandlerArgs e);
    public event WheelEventHandler WheelDrag;
    private System.ComponentModel.IContainer components;
    private Image aImage;
    private double dSensitivity;
    private double dMin;
    private double dMax;
    private double dValue;
    private bool bLoop;
    private Orientation wheelAxe;
    private int nPos;
    private int lastX;
    private int lastY;
    private bool bCaptured;
     
    public double sensitivity
    {
    get
    {
    return dSensitivity;
    }
    set
    {
    dSensitivity = Math.Abs(value);
    }
    }
    public double Min
    {
    get
    {
    return dMin;
    }
    set
    {
    dMin = value;
    }
    }
    public double Max
    {
    get
    {
    return dMax;
    }
    set
    {
    dMax = value;
    }
    }
    public double Value
    {
    get
    {
    return dValue;
    }
    set
    {
    if(value < dMin) dValue = dMin;
    else if (value > dMax) dValue = dMax;
    else dValue = value;
    }
    }
    public bool Loop
    {
    get
    {
    return bLoop;
    }
    set
    {
    bLoop = value;
    }
    }
    public Orientation WheelAxe
    {
    get
    {
    return WheelAxe;
    }
    set
    {
    WheelAxe = value;
    RotateComponent();
    }
    }
     
     
     
    public WheelCtrl()
    {
    // 该调用是 Windows.Forms 窗体设计器所必需的。
    InitializeComponent();
     
    bCaptured = false;
    dSensitivity = 1.0;
    dMin = 0.0;
    dMax = 1.0;
    dValue = (dMin + dMax) / 2.0;
    bLoop = false;
    wheelAxe = Orientation.XAxe;
     
    nPos = 4;
    lastX = lastY = 0;
     
    RotateComponent();
     
    // TODO: 在 InitializeComponent 调用后添加任何初始化
     
    }
     
    /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if( components != null )
    components.Dispose();
    }
    base.Dispose( disposing );
    }
     
      #region Component Designer generated code
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器 
    /// 修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    // 
    // WheelCtrl
    // 
    this.Name = "WheelCtrl";
    this.Size = new System.Drawing.Size(56, 8);
     
    }
      #endregion
     
    protected override void OnPaint(PaintEventArgs e)
    {
    Graphics grfx = e.Graphics;
    Rectangle destRect;
    Rectangle srcRect;
     
    if(wheelAxe ==Orientation.YAxe)
    {
    destRect = new Rectangle(0,0,8,aImage.Height);
    srcRect = new Rectangle(nPos*(8-1),0,8,aImage.Height);
    }
    else
    {
    destRect = new Rectangle(0,0,aImage.Width,8);
    srcRect = new Rectangle(0,nPos*(8-1),aImage.Width,8);    
    }
     
    grfx.DrawImage(aImage,destRect,srcRect,GraphicsUnit.Pixel);
    }
     
    protected override void OnResize(EventArgs e)
    {
    if(this.DesignMode)
    {
    if(wheelAxe == Orientation.YAxe)
    {
    this.Size = new Size(8,aImage.Height);
    }
    else
    {
    this.Size = new Size(aImage.Width,8);
    }
    }
    }
     
    protected override void OnMouseDown(MouseEventArgs e)
    {
    if(e.Button == MouseButtons.Left)
    {
    bCaptured = true;
    }
    }
     
    protected override void OnMouseUp(MouseEventArgs e)
    {
    if(bCaptured && (e.Button & MouseButtons.Left) != 0)
    {
    bCaptured = false;
    }
    }
     
    protected override void OnMouseMove(MouseEventArgs e)
    {
    if(bCaptured)
    {
    int delta;
    if(wheelAxe == Orientation.YAxe)
    {
    delta = e.Y - lastY;
    }
    else
    {
    delta = e.X - lastX;
    }
     
    DragWheel(delta);
    this.Invalidate();
     
    WheelEventHandlerArgs eWheel = new WheelEventHandlerArgs(e.X, e.Y);
     
    if(WheelDrag != null)
    {
    WheelDrag(this,eWheel);
    }
     
    lastX = e.X;
    lastY = e.Y;
    }
    }
     
    private void DragWheel(int dx)
    {
    double ddx = (dx != 0) ? Math.Abs(dx) : 1.0;
    double xx = dx / ddx * Math.Log(Math.Abs(dx) + 2.0);
    nPos = (int)((xx != 0 && (nPos+xx <= 0 || nPos+xx >=8)) ? 4 : nPos + xx);
    ddx = dValue + xx + ((xx = xx/ddx) * dSensitivity);
     
    if(bLoop)
    {
    if(ddx > dMax)
    {
    dValue = (dMin -dMax) + ddx;
    }
    else if (ddx < dMin)
    {
    dValue = -(dMin - dMax) + ddx;
    }
    else
    {
    dValue = ddx;
    }
    }
    else
    {
    dValue = Math.Max (Math.Min(ddx,dMax),dMin);
    }
    }
     
    private void RotateComponent()
    {
    //aImage = new Bitmap(GetType(),"WheelControl.wheelh.bmp"); //--------------------------------------------------------
    string bmpName = "wheelh.bmp";
    System.IO.Stream strm =  null; try
    {
    strm = this.GetType().Assembly.GetManifestResourceStream(bmpName);
    aImage = new Bitmap(strm);
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message.ToString());
    }
    finally
    {
    if(strm != null)
    strm.Close();
    }
    //--------------------------------------------------------
     
    if(wheelAxe == Orientation.YAxe)
    {
    aImage.RotateFlip(RotateFlipType.Rotate90FlipX);
    this.Size = new Size(8,aImage.Height);
    }
    else
    {
    this.Size = new Size(aImage.Width, 8);
    }
     
    this.Invalidate();
    }
     
    }
    }
      

  5.   

    to w_shd(酸辣粉) 我已经帖出全部的空间代码,现在可以编译通过了,但是调用这个控件才会出现错误提示抛出显示null不是Stream的有效值,异常为“未将对象引用设置到对象的实例”。麻烦再帮忙测试一下
      

  6.   

    to: yinwu2003(鹦鹉) 我把所有的代码拷贝到一个class1.cs文件中,调试不通过呀!!!程序“E:\wshd\Visual Studio Projects\WheelControl\obj\Debug\WheelControl.exe”未定义入口点不知道怎么回事????
    主函数在什么地方???
      

  7.   

    要么你把源代码 mailto :[email protected] 吧
      

  8.   

    to wordinchina() 你的信箱是什么呢??我发代码给你