zoukankan      html  css  js  c++  java
  • MultiMediaControl

    在项目的过程中,我们经常需要显示flash image,视频等一些东西做为banner等。
    这个时候我们希望有一个控件,像Image一样直要传给它ImageUrl就可以自动显示出合适的东西

    [Designer("System.Web.UI.Design.WebControls.PreviewControlDesigner, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
        [DefaultProperty(
    "ImageUrl")]
        [ToolboxData(
    "<{0}:MultiMedia runat=server></{0}:MultiMedia>")]
        
    public class MultiMedia : Image
        
    {

            
    public FileType FileType = FileType.Other;


            
    protected virtual void CalculateType()
            
    {
                
    if (!string.IsNullOrEmpty(ImageUrl))
                
    {
                    
    int start = ImageUrl.LastIndexOf('.');
                    
    string type = ImageUrl.Substring(start, ImageUrl.Length - start).ToLower();
                    
    if (type == ".swf")
                    
    {
                        FileType 
    = FileType.Flash;
                    }

                    
    else
                    
    {
                        FileType 
    = FileType.Image;
                    }

                }

            }


            
    protected override void Render(HtmlTextWriter writer)
            
    {
                CalculateType();
                
    switch(FileType)
                
    {
                    
    case FileType.Image:
                        
    base.Render(writer);
                        
    break;
                    
    case FileType.Flash:
                        RenderFlash(writer);
                        
    break;
                }

                
               
            }


            
    public virtual void RenderFlash(HtmlTextWriter output)
            
    {

                
    string url = this.ResolveUrl(ImageUrl);
               
                output.Write(
    "<embed src='"+url+"' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='"+this.Width+"' height='"+this.Height+"' wmode='Opaque'></embed>");

                
            
            }

        }


        
    public enum FileType
        
    {
            Image,
            Flash,
            Other,
        }

    }

    也许你发现了。什么在选择的时候没有发现*.swf 这个时候我们可以自己扩展
    public class MediaUrlFilter : System.Web.UI.Design.UrlEditor
    {

        
    protected override string Filter
        
    {
            
    get
            
    {
                
    return "MultiType (*.swf *.jpg *.gif) |*.swf;*.gif;*.jpg;*.png|All files|*.*";
            }

        }

    }


    并重写
      [Editor(typeof(MediaUrlFilter),typeof(System.Drawing.Design.UITypeEditor))]
            
    public override string ImageUrl
            
    {
                
    get
                
    {
                    
    return base.ImageUrl;
                }

                
    set
                
    {
                    
    base.ImageUrl = value;
                }

            }
    这样我们就可以发现了。

    注意:System.Web.UI.Design 这个命名空间在 System.Design.dll里。需要使用browser把它加进来

    一些需要用到的东西可以自己扩展

    ADD:
       public virtual void RenderVideo(HtmlTextWriter output)
            
    {
                output.NewLine 
    = "\r\n";
                
    string url = this.ResolveUrl(ImageUrl);
                output.Write(
    "<embed src='"+url+"' border='0' width='"+this.Width+"' height='"+this.Height+"' type='application/x-mplayer2'></embed>");
            }

  • 相关阅读:
    ural(Timus) 1019 Line Painting
    ACMICPC Live Archive 2031 Dance Dance Revolution
    poj 3321 Apple Tree
    其他OJ 树型DP 选课
    poj 3548 Restoring the digits
    ACMICPC Live Archive 3031 Cable TV Network
    递归循环获取指定节点下面的所有子节点
    手动触发asp.net页面验证控件事件
    子级Repeater获取父级Repeater绑定项的值
    没有列名的数据绑定
  • 原文地址:https://www.cnblogs.com/lovebanyi/p/897449.html
Copyright © 2011-2022 走看看