当前位置: 首页 > news >正文

『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件

代码:

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DemoWebControl
{
    /// <summary>
    /// 自己的Asp.Net服务器组件 Image:输出内嵌的在程序集中的 图片资源
    /// </summary>
    public class DemoImage : WebControl
    {
        protected bool IsDesignMode
        {
            get { return DesignMode || HttpContext.Current == null || Page == null; }
        }
        public DemoEnumImage DemoEnumImage { get; set; }

        //通过用户在 属性中的设置,将内嵌的图片 作为 IMG标签 输出到 页面
        protected override void Render(HtmlTextWriter output)
        {
            string imageUrl = string.Empty;
            if (Page!=null)
            {
                if(DemoEnumImage==DemoEnumImage.Image01)
                    imageUrl = Page.ClientScript.GetWebResourceUrl(GetType(), 
                                @"DemoWebControl.Resources.DemoImage01.jpg");
                else if (DemoEnumImage == DemoEnumImage.Image02)
                    imageUrl = Page.ClientScript.GetWebResourceUrl(GetType(), 
                                @"DemoWebControl.Resources.DemoImage02.jpg");
                else if (DemoEnumImage == DemoEnumImage.Image03)
                    imageUrl = Page.ClientScript.GetWebResourceUrl(GetType(), 
                                @"DemoWebControl.Resources.DemoImage03.jpg");
            }

            output.Write("<image id=\"" + ClientID + "\" name=\"" + ClientID + 
                "\" class=\"" + CssClass + "\" src=\"" + imageUrl + "\" />");
        }
    }

    [Serializable]
    public enum DemoEnumImage { Image01, Image02, Image03, }
}

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DemoImagePage.aspx.cs" 
Inherits="AspNetDemo.DemoImagePage" %>
<%@ Register assembly="DemoWebControl" namespace="DemoWebControl" tagprefix="Demo" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <style type="text/css">
        .Demo{ border: 1px solid RED; }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        
        <Demo:DemoImage ID="DemoImage1" DemoEnumImage="Image03" CssClass="Demo" runat="server" />

    </div>
    </form>
</body>
</html>

嵌入资源:

运行截图:

相关技术点:

  • 将一个图片资源 内嵌到 程序集中,需要设置 文件VS属性(生成操作:签入的资源);
  • 程序集项目AssemblyInfo.cs中需要加入如下代码(其中WebResource包括 资源名称,资源类型):
  • // 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
    // 方法是按如下所示使用“*”:
    // [assembly: AssemblyVersion("1.0.*")]
    [assembly: AssemblyVersion("1.0.0.0")]
    [assembly: AssemblyFileVersion("1.0.0.0")]
    
    //此标识 可以让 拖拽的控件 自动以 Demo 作为 tagprefix 属性,比如:
    //<%@ Register assembly="DemoWebControl" namespace="DemoWebControl" tagprefix="Demo" %>
    [assembly: TagPrefix("DemoWebControl", "Demo")]
    
    [assembly: WebResource("DemoWebControl.Resources.DemoImage01.jpg", "image/jpeg")]
    [assembly: WebResource("DemoWebControl.Resources.DemoImage02.jpg", "image/jpeg")]
    [assembly: WebResource("DemoWebControl.Resources.DemoImage03.jpg", "image/jpeg")]
    
    [assembly: WebResource("DemoWebControl.Resources.DemoCss01.css", "text/css")]
    [assembly: WebResource("DemoWebControl.Resources.DemoJs01.js", "text/javascript")]

  • 获取 程序集中的 内嵌文件的Url代码是:Page.ClientScript.GetWebResourceUrl(GetType(),@"资源名称");

相关系列文章链接:

  • 『Asp.Net 组件』Asp.Net 服务器组件 的开发优势和劣势
  • 『Asp.Net 组件』第一个 Asp.Net 服务器组件:自己的文本框控件
  • 『Asp.Net 组件』Asp.Net 服务器组件 内嵌图片:自己的图片控件
  • 『Asp.Net 组件』Asp.Net 服务器组件 内嵌CSS:将CSS封装到程序集中
  • 『Asp.Net 组件』Asp.Net 服务器组件 内嵌JS:让自己的控件动起来
  • 『Asp.Net 组件』Demo源码在线阅读

相关文章:

  • 『Asp.Net 组件』Asp.Net 服务器组件 内嵌CSS:将CSS封装到程序集中
  • 『Asp.Net 组件』Asp.Net 服务器组件 的开发优势和劣势
  • Linux系统中的文件目录介绍——Linux system files in the directory structure is introduced
  • 『开源』字符串匹配引擎
  • java 新 IO 的运用
  • 『开源』源码在线阅读工具
  • 视频编解码学习:理论基础
  • 每天一道算法_4_Hangover
  • 一初探js特效魅力之鼠标悬浮事件01
  • linux系统的组成——The composition of the Linux system
  • snprintf与printf
  • 一初探js特效魅力之div显示隐藏变色02
  • 帮豆包刷“天天爱消除”,“天天连萌”
  • 『开源』一个简单的 字符串计算 算法开源
  • 一初探js特效魅力之函数传参03
  • [译] React v16.8: 含有Hooks的版本
  • canvas绘制圆角头像
  • ComponentOne 2017 V2版本正式发布
  • Django 博客开发教程 8 - 博客文章详情页
  • JavaScript设计模式与开发实践系列之策略模式
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • sublime配置文件
  • Wamp集成环境 添加PHP的新版本
  • 力扣(LeetCode)22
  • 前端存储 - localStorage
  • 使用 @font-face
  • 栈实现走出迷宫(C++)
  • 阿里云API、SDK和CLI应用实践方案
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​TypeScript都不会用,也敢说会前端?
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $.ajax()
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (NSDate) 时间 (time )比较
  • (poj1.3.2)1791(构造法模拟)
  • (附源码)ssm高校实验室 毕业设计 800008
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (一)WLAN定义和基本架构转
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)菜鸟学数据库(三)——存储过程
  • (转)程序员疫苗:代码注入
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (转载)虚函数剖析
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET 读取 JSON格式的数据
  • .NET项目中存在多个web.config文件时的加载顺序
  • .NET中的Exception处理(C#)
  • .sh
  • .sys文件乱码_python vscode输出乱码
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [Android]How to use FFmpeg to decode Android f...