<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>
    以文本方式查看主題

    -  曙海教育集團(tuán)論壇  (http://www.hufushizhe.com/bbs/index.asp)
    --  Windows Mobile手機(jī)開(kāi)發(fā)  (http://www.hufushizhe.com/bbs/list.asp?boardid=48)
    ----  Windows mobile 開(kāi)發(fā)入門—開(kāi)發(fā)絢麗滑動(dòng)效果  (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=48&id=2099)

    --  作者:wangxinxin
    --  發(fā)布時(shí)間:2010-12-4 9:38:16
    --  Windows mobile 開(kāi)發(fā)入門—開(kāi)發(fā)絢麗滑動(dòng)效果
    前言
        在這里制作一個(gè)9宮格的小程序,如果超過(guò)9個(gè),那么就自動(dòng)翻頁(yè)。翻頁(yè)采用劃動(dòng)實(shí)現(xiàn),并且有慣性作用。

    原理
    mobile手機(jī)里滑動(dòng)效果主要是原理是支持屏幕的觸摸,當(dāng)我們按下、松開(kāi)時(shí)系統(tǒng)分別可以捕捉到相應(yīng)的坐標(biāo)位置,然后動(dòng)態(tài)的改變布局,從而達(dá)到劃動(dòng)的效果。
    圖型button

    由于mobile還沒(méi)有支持圖片button,所以我們做出一個(gè)輔佐類,當(dāng)按下、彈開(kāi)時(shí)分別使用鋼筆繪制不同的圖片到屏幕。


    Code
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Drawing;
    using System.Windows.Forms;
    using System.Drawing.Imaging;


    namespace iPhoneUI
    {
        public class ImageButton  
        {
            internal Rectangle clientArea;
            internal Form owner;
            internal Bitmap image;
            internal Bitmap imageDown;
            internal bool pushed = false;
            internal Point location;
            internal Point start;
            internal int h=30,w=30;
            internal bool Enable = false;
            private double pressTime = Environment.TickCount;
            internal bool pushedOneTime = false;

            public string Name {get;set;}

            public bool IsPressedOneTime
            {
                get { return pushedOneTime; }
                set { pushedOneTime = value; }
            }

            public event System.EventHandler Click;
            public event System.EventHandler DoubleClick;

            public ImageButton(Form owner,int w,int h)
            {
                this.w = w;
                this.h = h;
                
                this.owner = owner;
                Attach(owner);         
            }
            public ImageButton(Form owner,Point location)
            {
                this.owner = owner;
                Attach(owner);
                this.location = location;
                this.clientArea = new Rectangle(location.X, location.Y, h, w);
            }

            public Point Location
            {
                set
                {
                    this.location = value;
                    this.clientArea = new Rectangle(location.X, location.Y, w, h);
                
                }
                get { return location; }         
             
            }      

            public Bitmap Image
            {
                get { return image;}
                set  
                {  
                    image = value;
                    if (image != null)
                    {
                        clientArea = new Rectangle(location.X, location.Y, image.Width, image.Height);
                    }
                }
            }

            public Bitmap ImageDown
            {
                get { return imageDown;}
                set { imageDown = value; }
            }
          
            public bool HitTest(int x, int y)
            {
                return clientArea.Contains(x, y);
            }

            private void Attach(Form owner)
            {            
                owner.MouseDown += new MouseEventHandler(owner_MouseDown);         
                owner.MouseUp += new MouseEventHandler(owner_MouseUp);
                owner.DoubleClick += new EventHandler(owner_DoubleClick);
            }

            void owner_DoubleClick(object sender, EventArgs e)
            {
               
                
            }

            public virtual void owner_MouseUp(object sender, MouseEventArgs e)
            {
                if (!Enable)
                    return;

                if (pushed)
                {
                    using (Graphics gx = owner.CreateGraphics())
                    {
                        this.pushed = false;
                        this.Paint(gx);
                        owner.Invalidate();
                    }
                    pushed = false;

                    if ((Environment.TickCount - pressTime) < 100)
                    {
                        if (Click != null)
                            Click(this, e);
                    }
                }

    //            SendMessage(ButtonCode, "Button Pressed");
            }

            public virtual void owner_MouseDown(object sender, MouseEventArgs e)
            {
                if (!Enable)
                    return;

                if (this.HitTest(e.X, e.Y))
                {
                    using (Graphics gx = owner.CreateGraphics())
                    {
                        this.pushed = true;
                        IsPressedOneTime = true;
                        this.Paint(gx);

                        if ((Environment.TickCount - pressTime) < 300)
                        {
                            if (DoubleClick != null)
                                DoubleClick(this, e);
                        }

                        pressTime = Environment.TickCount;
                    }
                    start = new Point(e.X, e.Y);            
                }
            }
         
            public void Paint(Graphics gx)
            {
                if (!Enable)
                    return;
                //gx.Clear(Color.White);

                ImageAttributes attrib = new ImageAttributes();
                Color color = GetTransparentColor(image);
                attrib.SetColorKey(color, color);

                if (!pushed || imageDown == null)
                    gx.DrawImage(image, clientArea, 0, 0, clientArea.Width, clientArea.Height, GraphicsUnit.Pixel, attrib);
                     
                else
                {     
                    gx.DrawImage(imageDown, clientArea, 0, 0, clientArea.Width, clientArea.Height, GraphicsUnit.Pixel, attrib);      
                            
                }
                Brush b = new SolidBrush(Color.Black);
               
                int txtX=clientArea.Location.X;
                if(Name.Length<5)//右移5個(gè)PIX
                    txtX+=5;
                gx.DrawString(this.Name, owner.Font, b, txtX, clientArea.Bottom);

            }

            internal Color GetTransparentColor(Bitmap image)
            {
                return image.GetPixel(0, 0);
            }
         
        }
    }


    當(dāng)mouse按下時(shí),判斷是否在圖像所在的區(qū)域內(nèi),就執(zhí)行按下時(shí)繪制圖像。并且判斷兩次按下時(shí)間小于300毫秒,就認(rèn)為是雙擊,發(fā)出注冊(cè)雙擊事件。當(dāng)mouse彈起時(shí),恢復(fù)按前的圖像,并且如果按下時(shí)間間隔不超過(guò)100毫秒,認(rèn)為是單擊。

    初使化按扭


    Code
      1<?xml version="1.0" standal?>
      2<DocumentElement>  
      3  <menu>
      4    <Name>測(cè)試1</Name>
      5   
      6    <path>Chat 46x46.bmp</path>
      7    <pressPath>Chat 46x46.bmp</pressPath>
      8  </menu>
      9    <menu>
    10    <Name>測(cè)試1a</Name>
    11   
    12    <path>Chat 46x46.bmp</path>
    13    <pressPath>Chat 46x46.bmp</pressPath>
    14  </menu>
    15  <menu>
    16    <Name>測(cè)試1b</Name>
    17   
    18    <path>lock 46x46.bmp</path>
    19    <pressPath>lock 46x46_pressed.bmp</pressPath>
    20  </menu>
    21   <menu>
    22    <Name>測(cè)試1c</Name>
    23   
    24    <path>Internet Explorer 46x46.bmp</path>
    25    <pressPath>Internet Explorer 46x46_pressed.bmp</pressPath>
    26  </menu>
    27  <menu>
    28    <Name>測(cè)試1d</Name>
    29   
    30    <path>Close 46x46.bmp</path>
    31    <pressPath>Close 46x46_pressed.bmp</pressPath>
    32  </menu>
    33   <menu>
    34    <Name>測(cè)試1e</Name>
    35  
    36    <path>Chat 46x46.bmp</path>
    37    <pressPath>Chat 46x46_pressed.bmp</pressPath>
    38  </menu>
    39  <menu>
    40    <Name>測(cè)試1f</Name>
    41   
    42    <path>Camera 46x46.bmp</path>
    43    <pressPath>Camera 46x46_pressed.bmp</pressPath>
    44  </menu>
    45  <menu>
    46    <Name>測(cè)試1g</Name>
    47   
    48    <path>Camera 46x46.bmp</path>
    49    <pressPath>Camera 46x46_pressed.bmp</pressPath>
    50  </menu>
    51    <menu>
    52    <Name>
    53        測(cè)試1h
    54    </Name>
    55  
    56    <path>Camera 46x46.bmp</path>
    57    <pressPath>Camera 46x46_pressed.bmp</pressPath>
    58  </menu>

    主站蜘蛛池模板: 亚洲欧美日韩精品久久奇米色影视| 国产精品成人观看视频国产奇米 | 99在线观看视频免费| 日本一道本高清| 亚洲欧美日韩在线不卡| 精品国产免费一区二区| 国产欧美一区二区三区视频在线观看 | 国语对白做受xxxx| 中文字幕成人网| 日本高清免费中文字幕不卡| 亚洲熟妇色xxxxx欧美老妇| 福利视频一区二区牛牛| 国产国产精品人在线视| 91精品国产91久久综合| 女人18毛片a级毛片| 久久久无码一区二区三区| 日韩精品无码人妻一区二区三区| 人人玩人人添人人| 精品国产中文字幕| 国产又爽又黄又无遮挡的激情视频| 97视频免费观看2区| 天天成人综合网| 久久91精品国产91久久小草| 日韩午夜电影网| 亚洲成av人片在线观看www| 波多野结衣被三个小鬼| 午夜视频一区二区三区| 色狠狠久久av五月综合| 国产精品久久福利网站| heisiav1| 女人张开腿让男桶喷水高潮| 久久91精品综合国产首页| 日本娇小xxxⅹhd成人用品| 亚洲国产第一区| 欧美日韩中文国产一区| 偷偷狠狠的日日高清完整视频| 精品一区二区三区免费视频| 国产亚洲一区二区手机在线观看 | 国产在线精品网址你懂的| 25岁的女高中生在线观看| 国产麻豆一精品一av一免费|