예제 #1
0
        private void showImage(int index)
        {
            if (index >= imageList.Count)
            {
                return;
            }
            ShowIndex = index;
            this.BeginInvoke(new EventHandler((s, e) =>
            {
                if (ShowIndex == 0)
                {
                    leftPictureBox.Visible = false;
                }
                else
                {
                    leftPictureBox.Visible = true;
                }
                if (ShowIndex == imageList.Count - 1)
                {
                    rightPictureBox2.Visible = false;
                }
                else
                {
                    rightPictureBox2.Visible = true;
                }
                this.Invalidate();
            }));
            ChatHistoryListItem item = imageList[ShowIndex];

            if (item.model.isGifFace)
            {
                if (item.model.faceH < Height - 60 && item.model.faceW < Width - 150)
                {
                    this.BeginInvoke(new EventHandler((s, e) =>
                    {
                        if (vlcControl1.IsPlaying)
                        {
                            vlcControl1.Stop();
                        }
                        vlcControl1.Visible       = false;
                        dSkinPictureBox1.Visible  = true;
                        dSkinNewPanel1.Visible    = false;
                        dSkinButton1.Visible      = false;
                        dSkinPictureBox1.Image    = item.model.image == null ? item.model.thumbnailImage : item.model.image;
                        dSkinPictureBox1.Location = new Point((Width - item.model.faceW - 150) / 2, (Height - item.model.faceH) / 2 + 60);
                        dSkinPictureBox1.Size     = new Size(item.model.faceW, item.model.faceH);
                        DCWebImageMaanager.shard.downloadImageAsync(item.model.gitFaceURL, (image, b) =>
                        {
                            if (image != null)
                            {
                                if (dSkinPictureBox1.IsHandleCreated)
                                {
                                    dSkinPictureBox1.BeginInvoke(new EventHandler((ss, ee) =>
                                    {
                                        dSkinPictureBox1.Image = image;
                                        dSkinPictureBox1.Invalidate();
                                    }));
                                }
                            }
                        });
                        this.Invalidate();
                    }));
                }
                else if (item.model.faceH > Height - 60)
                {
                    int w = Convert.ToInt32((double)item.model.faceW / (double)item.model.faceH * (Height - 60));
                    this.BeginInvoke(new EventHandler((s, e) =>
                    {
                        if (vlcControl1.IsPlaying)
                        {
                            vlcControl1.Stop();
                        }
                        vlcControl1.Visible       = false;
                        dSkinPictureBox1.Visible  = true;
                        dSkinNewPanel1.Visible    = false;
                        dSkinButton1.Visible      = false;
                        dSkinPictureBox1.Image    = item.model.image == null ? item.model.thumbnailImage : item.model.image;
                        dSkinPictureBox1.Location = new Point((Width - 150 - w) / 2, 60);
                        dSkinPictureBox1.Size     = new Size(w, Height - 60);
                        DCWebImageMaanager.shard.downloadImageAsync(item.model.gitFaceURL, (image, b) =>
                        {
                            if (image != null)
                            {
                                if (dSkinPictureBox1.IsHandleCreated)
                                {
                                    dSkinPictureBox1.BeginInvoke(new EventHandler((ss, ee) =>
                                    {
                                        dSkinPictureBox1.Image = image;
                                        dSkinPictureBox1.Invalidate();
                                    }));
                                }
                            }
                        });
                        this.Invalidate();
                    }));
                }
                else
                {
                    int h = Convert.ToInt32((double)item.model.faceH / (double)item.model.faceW * ((double)Width - 150));
                    this.BeginInvoke(new EventHandler((s, e) =>
                    {
                        if (vlcControl1.IsPlaying)
                        {
                            vlcControl1.Stop();
                        }
                        vlcControl1.Visible       = false;
                        dSkinPictureBox1.Visible  = true;
                        dSkinNewPanel1.Visible    = false;
                        dSkinButton1.Visible      = false;
                        dSkinPictureBox1.Image    = item.model.image == null ? item.model.thumbnailImage : item.model.image;
                        dSkinPictureBox1.Location = new Point((Width - 150 - item.model.faceW) / 2, (Height - h) / 2 + 60);
                        dSkinPictureBox1.Size     = new Size(item.model.faceW, h);
                        DCWebImageMaanager.shard.downloadImageAsync(item.model.gitFaceURL, (image, b) =>
                        {
                            if (image != null)
                            {
                                if (dSkinPictureBox1.IsHandleCreated)
                                {
                                    dSkinPictureBox1.BeginInvoke(new EventHandler((ss, ee) =>
                                    {
                                        dSkinPictureBox1.Image = image;
                                        dSkinPictureBox1.Invalidate();
                                    }));
                                }
                            }
                        });
                        this.Invalidate();
                    }));
                }
            }
            else if (item.model.bodyType == EMMessageBodyType.IMAGE)
            {
                if (File.Exists(item.model.fileLocalPath))
                {
                    try
                    {
                        Image image = Image.FromFile(item.model.fileLocalPath);
                        Size  s     = image.Size;
                        if (s.Height > s.Width)
                        {
                            int w = Convert.ToInt32((double)s.Width / (double)s.Height * (this.Height - 60));
                            int h = Convert.ToInt32((double)s.Height / (double)s.Width * w);
                            s = new Size(w, h);
                        }
                        else
                        {
                            int h = Convert.ToInt32((double)s.Height / (double)s.Width * (this.Width - 150));
                            int w = Convert.ToInt32((double)s.Width / (double)s.Height * h);
                            s = new Size(w, h);
                        }
                        this.BeginInvoke(new EventHandler((ss, ee) =>
                        {
                            if (vlcControl1.IsPlaying)
                            {
                                vlcControl1.Stop();
                            }
                            vlcControl1.Visible       = false;
                            dSkinPictureBox1.Visible  = true;
                            dSkinNewPanel1.Visible    = false;
                            dSkinPictureBox1.Image    = image;
                            dSkinButton1.Visible      = false;
                            dSkinPictureBox1.Location = new Point((this.Width - 150 - s.Width) / 2 + 75, (this.Height - s.Height) / 2 + 60);
                            dSkinPictureBox1.Size     = s;
                            this.Invalidate();
                        }));
                    }
                    catch (Exception e)
                    {
                        DownLoadChatFileManager.shard.downloadFileAttchment(item.model.message, (msg) =>
                        {
                            EMImageMessageBody mImageMessageBody = msg.bodies()[0] as EMImageMessageBody;
                            if (File.Exists(mImageMessageBody.localPath()))
                            {
                                Image image = Image.FromFile(mImageMessageBody.localPath());
                                if (image != null)
                                {
                                    Size s = image.Size;
                                    if (s.Height > s.Width)
                                    {
                                        int w = Convert.ToInt32((double)s.Width / (double)s.Height * (this.Height - 60));
                                        int h = Convert.ToInt32((double)s.Height / (double)s.Width * w);
                                        s     = new Size(w, h);
                                    }
                                    else
                                    {
                                        int h = Convert.ToInt32((double)s.Height / (double)s.Width * (this.Width - 150));
                                        int w = Convert.ToInt32((double)s.Width / (double)s.Height * h);
                                        s     = new Size(w, h);
                                    }
                                    this.BeginInvoke(new EventHandler((ss, ee) =>
                                    {
                                        if (vlcControl1.IsPlaying)
                                        {
                                            vlcControl1.Stop();
                                        }
                                        vlcControl1.Visible       = false;
                                        dSkinPictureBox1.Visible  = true;
                                        dSkinNewPanel1.Visible    = false;
                                        dSkinButton1.Visible      = false;
                                        dSkinPictureBox1.Image    = image;
                                        dSkinPictureBox1.Location = new Point((this.Width - 150 - s.Width) / 2 + 75, (this.Height - s.Height) / 2 + 60);
                                        dSkinPictureBox1.Size     = s;
                                        this.Invalidate();
                                    }));
                                }
                                else
                                {
                                    MessageBox.Show("加载图片失败");
                                }
                            }
                        });
                    }
                }
                else
                {
                    DownLoadChatFileManager.shard.downloadFileAttchment(item.model.message, (msg) =>
                    {
                        EMImageMessageBody mImageMessageBody = msg.bodies()[0] as EMImageMessageBody;
                        if (File.Exists(mImageMessageBody.localPath()))
                        {
                            Image image = Image.FromFile(mImageMessageBody.localPath());
                            if (image != null)
                            {
                                Size s = image.Size;
                                if (s.Height > s.Width)
                                {
                                    int w = Convert.ToInt32((double)s.Width / (double)s.Height * (this.Height - 60));
                                    int h = Convert.ToInt32((double)s.Height / (double)s.Width * w);
                                    s     = new Size(w, h);
                                }
                                else
                                {
                                    int h = Convert.ToInt32((double)s.Height / (double)s.Width * (this.Width - 150));
                                    int w = Convert.ToInt32((double)s.Width / (double)s.Height * h);
                                    s     = new Size(w, h);
                                }
                                this.BeginInvoke(new EventHandler((ss, ee) =>
                                {
                                    if (vlcControl1.IsPlaying)
                                    {
                                        vlcControl1.Stop();
                                    }
                                    vlcControl1.Visible       = false;
                                    dSkinPictureBox1.Visible  = true;
                                    dSkinNewPanel1.Visible    = false;
                                    dSkinButton1.Visible      = false;
                                    dSkinPictureBox1.Image    = image;
                                    dSkinPictureBox1.Location = new Point((this.Width - 150 - s.Width) / 2, (this.Height - s.Height) / 2 + 60);
                                    dSkinPictureBox1.Size     = s;
                                    this.Invalidate();
                                }));
                            }
                            else
                            {
                                MessageBox.Show("加载图片失败");
                            }
                        }
                    });
                }
            }
            else if (item.model.bodyType == EMMessageBodyType.VIDEO)
            {
                this.BeginInvoke(new EventHandler((s, e) =>
                {
                    controlHost1.Location    = new Point(75, 60);
                    controlHost1.Size        = new Size(Width - 150, Height - 60);
                    dSkinNewPanel1.Visible   = true;
                    dSkinPictureBox1.Visible = false;
                    dSkinButton1.Visible     = true;
                    dSkinNewPanel1.Location  = new Point((controlHost1.Width - 200) / 2, controlHost1.Height - 100);
                    this.Invalidate();
                }));
                if (File.Exists(item.model.fileLocalPath))
                {
                    this.BeginInvoke(new EventHandler((s, e) =>
                    {
                        vlcControl1.Play(new FileStream(item.model.fileLocalPath, FileMode.Open));
                    }));
                }
                else
                {
                    DownLoadChatFileManager.shard.downloadFileAttchment(item.model.message, (msg) =>
                    {
                        EMVideoMessageBody body = msg.bodies()[0] as EMVideoMessageBody;
                        if (body != null)
                        {
                            item.model.fileLocalPath = body.localPath();
                            if (File.Exists(item.model.fileLocalPath))
                            {
                                this.BeginInvoke(new EventHandler((s, e) =>
                                {
                                    vlcControl1.Play(new FileStream(item.model.fileLocalPath, FileMode.Open));
                                }));
                            }
                            else
                            {
                                MessageBox.Show("下载失败");
                            }
                        }
                    });
                }
            }
        }
예제 #2
0
 private void dSkinButton1_Click(object sender, EventArgs e)
 {
     if (vlcControl1.GetCurrentMedia() == null)
     {
         ChatHistoryListItem item = imageList[ShowIndex];
         if (!File.Exists(item.model.fileLocalPath))
         {
             MessageBox.Show("视频下载中");
             return;
         }
         else
         {
             this.BeginInvoke(new EventHandler((s, ee) =>
             {
                 vlcControl1.Play(new FileStream(item.model.fileLocalPath, FileMode.Open));
             }));
         }
     }
     else
     {
         if (vlcControl1.IsPlaying)
         {
             vlcControl1.BeginInvoke(new EventHandler((ss, ee) =>
             {
                 vlcControl1.Pause();
             }));
         }
         else
         {
             if (isPaused)
             {
                 isPaused = false;
                 vlcControl1.BeginInvoke(new EventHandler((ss, ee) =>
                 {
                     vlcControl1.Play();
                 }));
             }
             else
             {
                 ChatHistoryListItem item = imageList[ShowIndex];
                 if (File.Exists(item.model.fileLocalPath))
                 {
                     this.BeginInvoke(new EventHandler((s, eee) =>
                     {
                         vlcControl1.Play(new FileStream(item.model.fileLocalPath, FileMode.Open));
                     }));
                 }
                 else
                 {
                     DownLoadChatFileManager.shard.downloadFileAttchment(item.model.message, (msg) =>
                     {
                         EMVideoMessageBody body = msg.bodies()[0] as EMVideoMessageBody;
                         if (body != null)
                         {
                             item.model.fileLocalPath = body.localPath();
                             if (File.Exists(item.model.fileLocalPath))
                             {
                                 this.BeginInvoke(new EventHandler((s, eee) =>
                                 {
                                     vlcControl1.Play(new FileStream(item.model.fileLocalPath, FileMode.Open));
                                 }));
                             }
                             else
                             {
                                 MessageBox.Show("下载失败");
                             }
                         }
                     });
                 }
             }
         }
     }
 }