Question

Je suis un nouveau développement mobile et je travaille sur une application de validation de principe sous Windows Mobile 6.0 Os et CF 2.0

J'ai essayé de concevoir un nouveau backgorund pour mon application avec Adobe Photoshop. J'ai trouvé un tutoriel sur codeproject.com sur la résolution du problème du plein écran Windows Mobile et du problème de l'arrière-plan de l'application avec Pinvoke api, selon Dr.Luiji's UI de l'iPhone dans l'article de Windows Mobile

Lorsque j'ai essayé d'ajouter une image en dégradé à l'arrière-plan du formulaire. texte de remplacement http://img268.imageshack.us/img268/8482/ppc2.jpg

La qualité de l'image semble médiocre. Mais j'ai essayé d'ajouter une autre image d'arrière-plan à l'arrière-plan de mon formulaire, cela semble bien.

texte de remplacement http://img199.imageshack.us/img199/9812/ppc3 .jpg

Je ne comprends pas où est le problème, j'ai essayé de changer mon image d'arrière-plan en bmp, png, jpg, etc. Qu'est-ce que je fais erreur avec photoshop?
(Remarque: par contre, je n'ai pas encore essayé cette conception sur de vrais ordinateurs. N'est-ce pas?)

Cependant, Mon autre problème réel est la méthode OnPaintBackground sur les formulaires mobiles. Comme je l'ai écrit plus haut, j'ai utilisé Pinvoke Api pour dessiner des formulaires en plein écran. Voici l'exemple de code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using Microsoft.WindowsMobile.Status;

namespace My_Mobile
{
    public partial class MainForm : Form
    {

        Globals _globals = new Globals();
        Graphics _gxBuffer;
        Bitmap _offsetBitmap;  

        Bitmap backgroundVertical = null;
        public MainForm()
        {
            InitializeComponent();
            backgroundVertical = new Bitmap(_globals.ApplicationPath + @"\Resources\wallpaper.bmp");
            _offsetBitmap = new Bitmap(this.Width, this.Height);

        }

        private void MainForm_Load(object sender, EventArgs e)
        {

        }


        protected override void OnPaintBackground(PaintEventArgs e)
        {
            //base.OnPaintBackground(e);
        }


        protected override void OnPaint(PaintEventArgs e)
        {
                _gxBuffer = Graphics.FromImage(_offsetBitmap);

                _gxBuffer.Clear(this.BackColor);

                _gxBuffer.DrawImage(backgroundVertical, 0, 0);
                this.Invalidate();

                e.Graphics.DrawImage(_offsetBitmap, 0, 0);

        }

    }
}

J'essaie d'ajouter des contrôles au formulaire, puis les contrôles sont transparents lors de la première exécution de l'application. Si vous essayez de déplacer le curseur sur ces commandes, elles sont tournées normalement.

Que puis-je faire pour résoudre ce problème?

Merci.

texte de remplacement http://img508.imageshack.us/img508/6717/ppc1 .jpg

Était-ce utile?

La solution

Tout d'abord, votre code doit être nettoyé:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using Microsoft.WindowsMobile.Status;

namespace My_Mobile
{
    public partial class MainForm : Form
    {

        Globals _globals = new Globals();

        Bitmap backgroundVertical = null;
        public MainForm()
        {
            InitializeComponent();
            backgroundVertical = new Bitmap(_globals.ApplicationPath + @"\Resources\wallpaper.bmp");
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
        }


        protected override void OnPaintBackground(PaintEventArgs e)
        {
            //base.OnPaintBackground(e);
        }


        protected override void OnPaint(PaintEventArgs e)
        {
             using (Bitmap buffer = new Bitmap(this.Width, this.Height))
             using (Graphics gfx = Graphics.FromImage(buffer))
             {
                gfx.Clear(this.BackColor);
                gfx.DrawImage(backgroundVertical, 0, 0);
                //this.Invalidate();  Don't call Invalidate here, it shouldn't be needed
                e.Graphics.DrawImage(buffer, 0, 0);
             }
        }
    }
}

Le blog classique de Chris Tacke parle des bitmaps dans les FC. Vous devez faire attention:

http: //blog.opennetcf .com / ctacke / PermaLink, guid, 987041fc-2e13-4bab-930a-f79021225b74.aspx

Après tout cela, je ne sais pas trop quelle est votre question. Pourriez-vous être plus précis? Comme par exemple, je ne vois aucun P / Invokes, mais vous avez dit en avoir utilisé. Où sont-ils?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top