VB.NET-QQ新闻弹窗样式图片制作工具

〇、下载地址

本程序的下载地址(百度网盘):http://pan.baidu.com/s/1qWBGGGG

一、关于本程序

Gnaea是一个QQ新闻弹窗的填字工具,可以在输入新闻标题和新闻内容后生成一张类似QQ新闻弹窗的图片。生成的图片可以被保存为BMP和PNG两种格式,或是直接复制到剪贴板。

效果如下图(注:内容纯属虚构)

二、程序控件

三、程序资源

被用作素材的资源:My.Resources.PopUp,取材于一张PNG格式的图片

四、程序代码

Imports System.Text

Public Class FormGnaea

#Region "初始化窗体"

    ‘加载窗体
    Private Sub FormGnaea_Load(sender As Object, e As EventArgs) _
        Handles MyBase.Load

        Me.pnlMiddle.BorderStyle = BorderStyle.FixedSingle
        Me.pnlButtom.BorderStyle = BorderStyle.FixedSingle
        Me.picPreview.Image = My.Resources.PopUp

    End Sub

#End Region
#Region "更新图片相关"

    ‘按新闻标题和内容更新图片信息
    Private Sub PreviewOnPic()

        Dim bmp As Bitmap = My.Resources.PopUp
        Dim g = Graphics.FromImage(bmp)

        ‘绘制新闻标题
        Dim lenOfTitle = Encoding.Default.GetByteCount(txtTitle.Text.Trim)
        g.DrawString(
             txtTitle.Text,
             New Font("宋体", 10, FontStyle.Bold),
             New SolidBrush(Color.FromArgb(255, 47, 75, 87)),
             New Point(125 - lenOfTitle * 3.5, 30))

        ‘绘制新闻内容
        Dim s As String = "  " + txtContent.Text
        Dim s1 = New StringBuilder
        Dim s2 = New StringBuilder
        Dim s3 = New StringBuilder
        Dim s4 = New StringBuilder
        For i As Integer = 0 To s.Length - 1
            ‘略过一切回车符和换行符
            If s(i) = vbCrLf Or s(i) = vbCr Or s(i) = vbLf Then
                Continue For
            End If
            ‘将合法的字符分配到各行
            If Encoding.Default.GetByteCount(s.Substring(0, i + 1)) < 33 Then
                s1.Append(s(i)) ‘第一行
            ElseIf Encoding.Default.GetByteCount(s.Substring(0, i + 1)) < 65 Then
                s2.Append(s(i)) ‘第二行
            ElseIf Encoding.Default.GetByteCount(s.Substring(0, i + 1)) < 97 Then
                s3.Append(s(i)) ‘第三行
            ElseIf Encoding.Default.GetByteCount(s.Substring(0, i + 1)) < 129 Then
                s4.Append(s(i)) ‘第四行
            End If
        Next

        ‘第一行
        g.DrawString(
             s1.ToString,
             New Font("宋体", 10, FontStyle.Regular),
             New SolidBrush(Color.FromArgb(255, 47, 75, 87)),
             New Point(20, 53))
        g.DrawString(
             s2.ToString,
             New Font("宋体", 10, FontStyle.Regular),
             New SolidBrush(Color.FromArgb(255, 47, 75, 87)),
             New Point(20, 73))
        g.DrawString(
             s3.ToString,
             New Font("宋体", 10, FontStyle.Regular),
             New SolidBrush(Color.FromArgb(255, 47, 75, 87)),
             New Point(20, 93))
        g.DrawString(
             s4.ToString,
             New Font("宋体", 10, FontStyle.Regular),
             New SolidBrush(Color.FromArgb(255, 47, 75, 87)),
             New Point(20, 113))

        picPreview.Image = bmp

    End Sub

    ‘修改新闻标题时自动更新图片
    Private Sub txtTitle_TextChanged(sender As Object, e As EventArgs) _
        Handles txtTitle.TextChanged

        Try
            PreviewOnPic()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

    End Sub

    ‘修改新闻内容时自动更新图片
    Private Sub txtContent_TextChanged(sender As Object, e As EventArgs) _
        Handles txtContent.TextChanged

        Try
            PreviewOnPic()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

    End Sub

#End Region
#Region "按钮事件相关"

    ‘按钮:将图片复制到剪贴板
    Private Sub btnCopy_Click(sender As Object, e As EventArgs) _
        Handles btnCopy.Click

        Clipboard.SetImage(picPreview.Image)

    End Sub

    ‘按钮:保存图片
    Private Sub btnSave_Click(sender As Object, e As EventArgs) _
        Handles btnSave.Click

        Try

            ‘保存图片窗体
            Dim sfd As SaveFileDialog = New SaveFileDialog
            With sfd
                .OverwritePrompt = True
                .Filter = "Windows位图(bmp)|*.bmp|可移植网络图形|*.png"
                .FileName = "新闻_" & DateTime.Now.ToString("yyyyMMdd_HHmmss")
                .Title = "保存图片"
            End With
            ‘保存图片
            If sfd.ShowDialog = Windows.Forms.DialogResult.OK Then
                If sfd.FilterIndex = 1 Then
                    picPreview.Image.Save(sfd.FileName, Imaging.ImageFormat.Bmp)
                ElseIf sfd.FilterIndex = 2 Then
                    picPreview.Image.Save(sfd.FileName, Imaging.ImageFormat.Png)
                End If
            End If

        Catch ex As Exception

            MessageBox.Show(ex.Message)

        End Try

    End Sub

    ‘按钮:退出程序
    Private Sub btnClose_Click(sender As Object, e As EventArgs) _
        Handles btnClose.Click

        Application.Exit()

    End Sub

#End Region

End Class

END

VB.NET-QQ新闻弹窗样式图片制作工具,布布扣,bubuko.com

时间: 2024-12-10 05:17:19

VB.NET-QQ新闻弹窗样式图片制作工具的相关文章

js封装好的模仿qq消息弹窗代码

在我们的日常开发中,或者生活中,经常需要用到弹出窗.这里我们就用js模拟一下qq消息一样的弹出窗. 直接贴代码: <!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&

Material Design:利用RecyclerView CardView实现新闻卡片样式

Material Design:利用RecyclerView CardView实现新闻卡片样式 明桑Android 主要介绍:`RecyclerView` 和 `CardView`的用法,通过RecyclerView和CardView实现新闻卡片样式... worlduc.com/blog2012.aspx?bid=34337742 worlduc.com/blog2012.aspx?bid=34337761 worlduc.com/blog2012.aspx?bid=34337794 worl

VC,VB程序按钮、图标样式美化

此处的"美化"指的不是通过代码进行美化你的程序.关于想进一步优化自己的程序界面的,不妨去了解下SkinSharp吧.本文提及的是利用第三方资源编辑软件在不更改程序任何框架和代码的前提下实现对界面的简单美化. 1.Windows2000按钮样式转为Windows XP按钮样式 两种按钮的差别比较容易区分,典型的就是VC6和VS2010开发出的MFC程序界面.前者的按钮是黑白的,后者有渲染效果 VC6样式: VS2010样式 细心的读者应该发现我这两个界面的icon是相同的.没错,我是用V

CSS Sprites样式生成工具的使用

今天写css的时候看到有一个实战视频的老师用了这个,觉得挺好就学习使用了一下,下面是一些简单介绍: 软件介绍 : CSS Sprites样式生成工具,网页设计师必备利器.CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的"background-image","background- repeat","background-position"的组合进行背景定位,background-position可以用数字能精

微信小程序自定义弹窗wcPop插件|仿微信弹窗样式

微信小程序自定义组件弹窗wcPop|小程序消息提示框|toast自定义模板弹窗 平时在开发小程序的时候,弹窗应用场景还是蛮广泛的,但是微信官方提供的弹窗比较有局限性,不能自定义修改.这个时候首先想到的是自定义组件化开发,就是把弹出框封装成一个组件,然后多处调用. 解决了小程序开发自定义弹窗出现后,遮罩层下的页面仍可以滚动的方法: 给遮罩层的最外层view中加入catchtouchmove="preventTouchMove" 即可解决该遮罩层点透问题. 根据需要还可以自定义多个按钮及事

商务通简单弹窗样式 V1.0

代码为: document.writeln('<style>*{margin:0; padding:0;}</style>');//创建中间弹框    document.writeln('<div id="showsswt" style="width:240px; height:120px; background:#FFFFFF; border:2px solid #CCCCCC; display:none;position: fixed;lef

QQ网页弹窗

1.网址:http://shang.qq.com/v3/index.html 2.选推广工具,提示语随便写 3.建一个html 网页,并把代码拷进去. 4.双击网页,就可以打开了.(用EditPlus编译器Ctrl+B也可以打开.) 把这个网页发给陌生人,陌生人就可以和你进行临时会话 5.我的代码如下: [html] view plaincopy <a target="_blank"href="http://wpa.qq.com/msgrd?v=3&uin=25

让VB程序真正实现XP样式 (不需要*.exe.manifest)

可以 利用工具 eXeScope 修改编译好的运行程序直接实现XP样式. 原先为了实现XP样式而把一个文件( XXX..exe.manifest)放入运行文件同一个目录 ,使用eXeScope 修改后,程序再也不用拖个尾巴啦--(eXeScope把"XXX..exe.manifest"合进主文件一起了 )原来的程序要想实现XP样式 需要添加 Private Declare Function InitCommonControls Lib "Comctl32.dll"

ArcGIS API for JavaScript 4.2学习笔记[22] 使用【QueryTask类】进行空间查询 / 弹窗样式

上一篇写道,使用Query类进行查询featureLayer图层的要素,也简单介绍了QueryTask类的使用. 这一篇博文继续推进,使用Query类和QueryTask类进行空间查询,查询USA的著名山体点要素. 同样的,只介绍重点.本章官方名字是:Query using QueryTask 照常,先看看结果:(默认三个参数都不动,直接点击按钮) 出现了绿色的圆锥体,点击圆锥体可以出现定制好的弹窗(PopupTemplate): 好,开始上课. 给出引用 require([ "esri/Map