在控制台中绘制图像

在控制台中绘制图像是一件非常有趣的事,不知情的人看到了会感觉很惊讶,如果你有GDI+绘制基础,那么继续往下看。

Imports System.Drawing
Imports System.Runtime.InteropServices

Module Module1
    ‘引用WIN32API,该函数用来获取当前命令行的窗口句柄,以便后面从该句柄创建画布
    <DllImport("kernel32.dll", SetLastError:=True)>
    Private Function GetConsoleWindow() As IntPtr
    End Function
    Dim H As IntPtr = GetConsoleWindow()

    Sub Main()
        ‘随便输出一行文本
        Console.Title = "脚本编译器"
        Console.ReadKey()
        Dim S As String = "正在将脚本编译为可执行Exe文件..."
        Console.Write(S)
        Console.ForegroundColor = ConsoleColor.White
        For I As Integer = 1 To 100 Step 2
            ‘依次从1到100绘制一个进度条
            DrawPersion(I)
            Threading.Thread.Sleep(100)
        Next
        ‘最后再绘制一次100%时的进度条
        DrawPersion(100)
        Console.WriteLine()
        Console.WriteLine()
        Console.WriteLine()
        Console.WriteLine("操作完成")
        While True
            Console.ReadKey()
            Console.WriteLine()
        End While
    End Sub
    ‘绘制进度条过程
    Private Sub DrawPersion(I As Integer)
        Dim T As Integer = Console.CursorTop
        Dim S As String = "正在将脚本编译为可执行Exe文件..."
        Using G As Graphics = Graphics.FromHwnd(H)
            G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
            ‘设置光标位置,计算出位置应该在文本结尾
            Console.SetCursorPosition(S.Length * 2, T)
            ‘通过当前命令行文本行数计算出最末行的起始位置,用以绘制图像
            Dim N As Integer = (T + 1) * Console.CursorSize - 5
            ‘绘制一个图片上去
            G.DrawImage(My.Resources.Compile, New Rectangle(0, N, 16, 16), New Rectangle(0, 0, 16, 16), GraphicsUnit.Pixel)
            ‘由于图片大小已知,又可计算出进度条左上角的起始位置,以下为绘制一个线性渐变的进度条
            Using Lg As New Drawing2D.LinearGradientBrush(New Point(0, N), New Point(0, N + Console.CursorSize), Color.SteelBlue, Color.DodgerBlue)
                ‘模拟值范围为0到300,并乘以当前传入的循环I值
                Dim L As Integer = 300 / 100 * I
                ‘用线性渐变填充一个矩形,该矩形是上面计算出的从图片右侧和同行Y值,长度为当前I比例的矩形
                G.FillRectangle(Lg, New Rectangle(20, N, L, 16))
                ‘得到进度文本的左上角,其实就是进度条矩形的左上角
                Dim Pt As Point = New Point(20, N)
                ‘绘制黑色文本模拟投影
                G.DrawString(String.Format("{0}%", I), New Font("宋体", 12, FontStyle.Bold), Brushes.Black, Pt)
                ‘坐标往左上角偏移1像素绘制白色文本
                Pt += New Point(-1, -1)
                G.DrawString(String.Format("{0}%", I), New Font("宋体", 12, FontStyle.Bold), Brushes.White, Pt)
            End Using
        End Using
    End Sub
End Module

  运行效果

原文地址:https://www.cnblogs.com/dylike/p/10447223.html

时间: 2024-08-27 14:33:59

在控制台中绘制图像的相关文章

Jenkins控制台中乱码问题

由于服务器环境及应用层各版本的不同.编码方式的不同因此会有很多种情况会出现乱码问题. 由于Jenkins中的job运行的是独立的一个shell环境,许多的环境变量与服务器中是不一样的,因此在job中执行的命令也就会有所差异. 因此可以在job中执行env命令,同时在服务器中执行env命令查看环境的异同点. 对于Jenkins中乱码问题,首先,确保Jenkins的容器如Glassfish,Tomcat的编码是正确的,已设置成如UTF-8编码. 若还有乱码,做如下尝试: 系统管理--系统设置,添加编

安卓突击:绘制图像

两种方法, 1,canvas.drawBitmap(); 2,drawable.draw(canvas); Bitmap.Config.ARGB_8888:代表的是RGB每个占8个字节,透明度通道占8个字节. 首先是使用InputStream is= context.getResources().openRawResource(R.drawable.panda);用来获取资源 然后是使用BitmapFactory来将is进行转换成Bitmap对象. BitmapFactory.Options o

C# 计算字符串在控制台中的显示长度

C# 计算字符串在控制台中的显示长度? 警告 您当前查看的页面是未经授权的转载! 如果当前版本排版错误,请前往查看最新版本:http://www.cnblogs.com/qin-nz/p/csharp-calculate-string-display-length.html 提示 更新时间:2016年01月09日. 本作品由勤奋的小孩创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可. 欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接( http

百度 主页中在控制台中

try{ if(window.console&&window.console.log) {console.log("一张网页,要经历怎样的过程,才能抵达用户面前?\n 一位新人,要经历怎样的成长,才能站在技术之巅?\n 探寻这里的秘密:\n 体验这里的挑战:\n 成为这里的主人:\n 加入百度,加入网页搜索,你,可以影响世界.\n"); console.log("请将简历发送至 %c [email protected]( 邮件标题请以“姓名-应聘XX职位-来自

利用跨域请求来隐藏firbug控制台中的Ajax请求

普通jquery的Ajax请求在控制台中是可见的,如下: 而在利用jsonp(json with padding)进行Ajax跨域时,发现Ajax请求不会在控制台显示. 跨域代码如下: 前端代码: $.ajax({ type : "get", //jquey不支持post方式跨域 async:false, url : "http://www.cnblog.com", //跨域请求的URL dataType : "jsonp", //传递给后端,用

5. Quartz2D 绘制图像

#pragma mark 绘制图像 -(void)drawImage:(CGContextRef)context{ UIImage *image = [UIImage imageNamed:@"1.png"]; //提示:绘制之后,就无法改变位置,也没有办法监听手势 //在指定点绘制图像 [image drawAtPoint:CGPointMake(50, 50)]; //会在指定的矩形中拉伸绘图 [image drawInRect:CGRectMake(0, 0, 320, 460)

转:在控制台中调试AngularJS应用

在控制台中调试AngularJS应用 在创建AngularJS应用时,一个很棘手的问题是如何在Chrome,Firefox,以及IE的JavaScript控制台中访问深藏在应用中的数据和服务.本文将会介绍一些如何从JavaScript控制台中监视和控制AngularJS应用的小技巧,来帮助你更加轻松的对AngularJS进行实时的测试修改. 1:访问作用域 我们可以使用一行简单的JS代码来访问任何作用域(甚至是独立的作用域): > angular.element(targetNode).scop

从控制台中读取密码 - C#

Tip :    从控制台中读取密码 语言: C# ______________________________________________________________ 在登陆Linux系统的时候,体验过在Linux的shell命令行窗口中输入用户密码吗? 下面体验下在Windows控制台中输入密码的方式 Showing  Effect SourceCode /// <summary> /// Read password from console /// </summary>

java swing开发的图像生成器demo实例源代码下载,实现绘制图像,截屏功能。

一个类似于画画的javase程序 绘制图形 原文:java swing开发的图像生成器demo实例源代码下载,实现绘制图像,截屏功能. java源代码下载地址:http://www.zuidaima.com/share/1550463330028544.htm 获取屏幕 打开调色板