vb.net自定义白板

news2025/7/12 11:21:36

希沃白板在学校里基本上是一直使用的,但是在非希沃电脑里面是没有启动白板的

简答介绍思路和具体的功能

1、背景颜色和画笔颜色自由切换、画笔粗细1~20可以调节。

2、画笔样式:虚线、点线、短线

3、基本图形:矩形,正方形,椭圆,正圆、直线、文字

4、橡皮、加载、保存功能

注意点:

1、主要的画图模块在pic.mousemove事件里,重点

2、使用        Pic.Invalidate()
                    Pic.Update()

实现实时更新

3、drawstring在透明bitmap上绘制文字会有黑边

源代码公开一下:

Imports System.ComponentModel
Imports System.Drawing.Drawing2D

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        SetStyle(ControlStyles.UserPaint, True)
        SetStyle(ControlStyles.AllPaintingInWmPaint, True)
        SetStyle(ControlStyles.DoubleBuffer, True)

        Filled = False
        Panel3.Visible = False
        Panel1.Visible = False
        Pic2.Visible = False
        Pic.Location = New Point(-1000, -1000)
        Pic.Width = 5000
        Pic.Height = 5000
        penImg = New Bitmap(Pic.Width, Pic.Height)
        g1 = Graphics.FromImage(penImg)
        g1.Clear(Color.Transparent)
        g1.SmoothingMode = SmoothingMode.HighQuality
        ' g1.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit
        Pic.Image = penImg
        pen.StartCap = LineCap.Round
        pen.EndCap = LineCap.Round
        If My.Application.CommandLineArgs().Count = 1 Then
            penImg = New Bitmap(My.Application.CommandLineArgs(0))
            Pic.Width = penImg.Width
            Pic.Height = penImg.Height
            g1 = Graphics.FromImage(penImg)
            'g1.Clear(Color.Transparent)
            g1.SmoothingMode = SmoothingMode.HighQuality
            Pic.Image = penImg
            pen.StartCap = LineCap.Round
            pen.EndCap = LineCap.Round
        End If
    End Sub

    Private Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
        ' VW.Stop()
    End Sub


    Dim MoveDown As Boolean = False
    Dim CurrX As Integer
    Dim CurrY As Integer
    Dim MousX As Integer
    Dim MousY As Integer
    Dim x1, x2, y1, y2 As Integer
    Private Sub Pic_MouseDown(sender As Object, e As MouseEventArgs) Handles Pic.MouseDown
        MousX = e.X
        MousY = e.Y
        MoveDown = True
        x1 = e.X
        y1 = e.Y
        x2 = e.X
        y2 = e.Y
    End Sub
    Dim g1 As Graphics
    Public penImg As Bitmap
    Dim listPoint As New List(Of Drawing.Point)
    Private Sub Pic_MouseMove(sender As Object, e As MouseEventArgs) Handles Pic.MouseMove
        If MoveDown = True Then
            Pic.Invalidate()
            Pic.Update()
            If func = 0 Then
                CurrX = Pic.Left - MousX + e.X
                CurrY = Pic.Top - MousY + e.Y
                Pic.Location = New Drawing.Point(CurrX, CurrY)
            ElseIf func = 1 Then

                listPoint.Add(New Drawing.Point(e.X, e.Y))
                If listPoint.Count > 3 Then
                    g1.DrawCurve(pen, listPoint.ToArray(), 0.1)

                End If
                'x1 = e.X
                '    y1 = e.Y
                '    g1.DrawLine(pen, New Point(x1, y1), New Point(x2, y2))
                '    x2 = e.X
                '    y2 = e.Y
            ElseIf func = 2 Then
                Pic2.Visible = True
                x1 = e.X
                y1 = e.Y
                g1.CompositingMode = CompositingMode.SourceCopy
                g1.FillRectangle(New SolidBrush(Color.Transparent), New Rectangle(x1 - 25, y1 - 25, 50, 50))
                Pic2.Location = New Drawing.Point(x1 + Pic.Location.X - 25, y1 + Pic.Location.Y - 25)
                Pic2.Width = 50
                Pic2.Height = 50



            ElseIf func = 3 Then
                If Filled = False Then

                    Pic.CreateGraphics.DrawEllipse(pen, New Rectangle(x1, y1, e.X - x1, e.Y - y1))
                    x2 = e.X
                    y2 = e.Y
                Else

                    Pic.CreateGraphics.FillEllipse(New SolidBrush(pen.Color), New Rectangle(x1, y1, e.X - x1, e.Y - y1))
                    x2 = e.X
                    y2 = e.Y
                End If

            ElseIf func = 4 Then
                If Filled = False Then

                    Pic.CreateGraphics.DrawRectangle(pen, PointList(New Point(x1, y1), New Point(e.X, e.Y)))
                    x2 = e.X
                    y2 = e.Y
                Else

                    Pic.CreateGraphics.FillRectangle(New SolidBrush(pen.Color), New Rectangle(x1, y1, e.X - x1, e.Y - y1))
                    x2 = e.X
                    y2 = e.Y
                End If

            ElseIf func = 5 Then

                Pic.CreateGraphics.DrawLine(pen, x1, y1, e.X, e.Y)

            ElseIf func = 6 Then
                If Filled = False Then

                    Pic.CreateGraphics.DrawRectangle(pen, PointListT(New Point(x1, y1), New Point(e.X, e.Y)))
                    x2 = e.X
                    y2 = e.Y
                Else

                    Pic.CreateGraphics.FillRectangle(New SolidBrush(pen.Color), PointListT(New Point(x1, y1), New Point(e.X, e.Y)))
                    x2 = e.X
                    y2 = e.Y
                End If
            ElseIf func = 7 Then
                If Filled = False Then

                    Pic.CreateGraphics.DrawEllipse(pen, PointListT(New Point(x1, y1), New Point(e.X, e.Y)))
                    x2 = e.X
                    y2 = e.Y
                Else

                    Pic.CreateGraphics.FillEllipse(New SolidBrush(pen.Color), PointListT(New Point(x1, y1), New Point(e.X, e.Y)))
                    x2 = e.X
                    y2 = e.Y
                End If

            ElseIf func = 8 Then
                Pic.CreateGraphics.DrawString(s, TxtFont, New SolidBrush(pen.Color), e.X, e.Y)
            End If
            'Pic.Image = penImg

        End If
    End Sub

    Private Sub Pic_MouseUp(sender As Object, e As MouseEventArgs) Handles Pic.MouseUp
        MoveDown = False
        g1.CompositingMode = CompositingMode.SourceCopy
        Pic2.Visible = False
        listPoint.Clear()
        If func = 3 Then
            If Filled = False Then
                Pic.Invalidate()
                g1.DrawEllipse(pen, New Rectangle(x1, y1, e.X - x1, e.Y - y1))
            Else
                Pic.Invalidate()
                g1.FillEllipse(New SolidBrush(pen.Color), New Rectangle(x1, y1, e.X - x1, e.Y - y1))
            End If
        End If
        If func = 4 Then
            If Filled = False Then
                Pic.Invalidate()
                g1.DrawRectangle(pen, PointList(New Point(x1, y1), New Point(e.X, e.Y)))
            Else
                Pic.Invalidate()
                g1.FillRectangle(New SolidBrush(pen.Color), New Rectangle(x1, y1, e.X - x1, e.Y - y1))
            End If
        End If
        If func = 5 Then
            Pic.Invalidate()
            g1.DrawLine(pen, x1, y1, e.X, e.Y)
        End If
        If func = 6 Then
            If Filled = False Then
                Pic.Invalidate()
                g1.DrawRectangle(pen, PointListT(New Point(x1, y1), New Point(e.X, e.Y)))
            Else
                Pic.Invalidate()
                g1.FillRectangle(New SolidBrush(pen.Color), PointListT(New Point(x1, y1), New Point(e.X, e.Y)))
            End If
        End If
        If func = 7 Then
            If Filled = False Then
                Pic.Invalidate()
                g1.DrawEllipse(pen, PointListT(New Point(x1, y1), New Point(e.X, e.Y)))
            Else
                Pic.Invalidate()
                g1.FillEllipse(New SolidBrush(pen.Color), PointListT(New Point(x1, y1), New Point(e.X, e.Y)))
            End If

        End If
        If func = 8 Then
            g1 = Graphics.FromImage(penImg)
            g1.SmoothingMode = SmoothingMode.HighQuality
            g1.TextRenderingHint = 5

            Dim stringSize As SizeF = g1.MeasureString(s, TxtFont)
            Dim bmp As New Bitmap(CInt(stringSize.Width), CInt(stringSize.Height))
            Dim gb As Graphics
            gb = Graphics.FromImage(bmp)
            If pen.Color <> Color.Black Then
                gb.Clear(Color.Black)
                gb.TextRenderingHint = 5
                gb.DrawString(s, TxtFont, New SolidBrush(pen.Color), 0, 0)
                bmp = New Bitmap(ColorReplace(bmp, Color.Black, Color.Transparent))
                g1.DrawImage(bmp, New Point(e.X, e.Y))
            ElseIf pen.Color = Color.Black Then
                gb.Clear(Color.White)
                gb.TextRenderingHint = 5
                gb.DrawString(s, TxtFont, New SolidBrush(pen.Color), 0, 0)
                bmp = New Bitmap(ColorReplace(bmp, Color.White, Color.Transparent))
                g1.DrawImage(bmp, New Point(e.X, e.Y))
            End If

            'g1.DrawString(s, TxtFont, New SolidBrush(pen.Color), New Point(e.X, e.Y))
        End If
        Pic.Image = penImg
    End Sub


    Public Function ColorReplace(bmp As Bitmap, OldColor As Color, NewColor As Color) As Bitmap
        Dim destImg As New Bitmap(bmp.Width, bmp.Height)

        Dim mycolormap(0) As Imaging.ColorMap
        mycolormap(0) = New Imaging.ColorMap()

        mycolormap(0).OldColor = OldColor
        mycolormap(0).NewColor = NewColor

        Dim imageAttributes As New Imaging.ImageAttributes()
        imageAttributes.SetRemapTable(mycolormap)
        Dim g As Graphics = Graphics.FromImage(destImg)
        g.DrawImage(bmp, New Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, imageAttributes)

        Return destImg
    End Function
    Dim func As Integer = 0
    Dim pen As New Pen(Color.Red, 2)
    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        If func = 0 Then
            Dim cdlg As New ColorDialog
            If cdlg.ShowDialog() = DialogResult.OK Then
                Pic.BackColor = cdlg.Color
            End If
        End If
        func = 0
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        If func = 1 Then
            Panel1.Visible = True
            Panel1.Location = New Point(Button3.Location.X + Panel2.Location.X, Button3.Location.Y + Panel2.Location.Y - 100)
        End If
        func = 1

    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        func = 2

    End Sub

    Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles Me.Resize
        Panel2.Location = New Point((Width - Panel2.Width) / 2, Height - 100)
        l.Location = New Point((Width - l.Width) / 2, (Height - l.Height) / 2)
    End Sub


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Panel1.Visible = False
    End Sub
    Dim s As String
    Private Sub Pic_Click(sender As Object, e As EventArgs) Handles Pic.Click
        Panel1.Visible = False
    End Sub

    Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles R1.CheckedChanged
        If R1.Checked = True Then
            pen.Width = 2
            TrB.Value = 2
            L1.Text = 2
        End If
    End Sub

    Private Sub R2_CheckedChanged(sender As Object, e As EventArgs) Handles R2.CheckedChanged
        If R2.Checked = True Then
            pen.Width = 4
            TrB.Value = 4
            L1.Text = 4
        End If
    End Sub

    Private Sub R3_CheckedChanged(sender As Object, e As EventArgs) Handles R3.CheckedChanged
        If R3.Checked = True Then
            pen.Width = 8
            TrB.Value = 8
            L1.Text = 8
        End If
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim save As New SaveFileDialog
        save.Filter = "All .net Picture Files|*.jpg;*.png;*.bmp;*.ico;*.jpeg;*.*"
        save.InitialDirectory = Application.StartupPath
        Dim a = save.ShowDialog
        If a = DialogResult.OK Then
            penImg.Save(save.FileName)
        End If
    End Sub

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
        Dim cdlg As New ColorDialog
        If cdlg.ShowDialog() = DialogResult.OK Then
            pen.Color = cdlg.Color
            Button6.BackColor = cdlg.Color
        End If
    End Sub

    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
        pen.Color = Color.Red
        Button6.BackColor = Color.Red
    End Sub

    Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles PictureBox2.Click
        pen.Color = Color.Black
        Button6.BackColor = Color.Black
    End Sub

    Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles PictureBox3.Click
        pen.Color = Color.Lime
        Button6.BackColor = Color.Lime
    End Sub

    Private Sub PictureBox4_Click(sender As Object, e As EventArgs) Handles PictureBox4.Click
        pen.Color = Color.Cyan
        Button6.BackColor = Color.Cyan
    End Sub

    Private Sub PictureBox5_Click(sender As Object, e As EventArgs) Handles PictureBox5.Click
        pen.Color = Color.Blue
        Button6.BackColor = Color.Blue
    End Sub

    Private Sub PictureBox6_Click(sender As Object, e As EventArgs) Handles PictureBox6.Click
        pen.Color = Color.Magenta
        Button6.BackColor = Color.Magenta
    End Sub

    Private Sub PictureBox7_Click(sender As Object, e As EventArgs) Handles PictureBox7.Click
        pen.Color = Color.Yellow
        Button6.BackColor = Color.Yellow
    End Sub

    Private Sub PictureBox8_Click(sender As Object, e As EventArgs) Handles PictureBox8.Click
        pen.Color = Color.Orange
        Button6.BackColor = Color.Orange
    End Sub

    Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrB.Scroll
        pen.Width = TrB.Value
        L1.Text = TrB.Value
    End Sub

    Private Sub PictureBox9_Click(sender As Object, e As EventArgs) Handles PictureBox9.Click
        pen.Color = Color.White
        Button6.BackColor = Color.White
    End Sub

    Private Sub bg1_CheckedChanged(sender As Object, e As EventArgs) Handles bg1.CheckedChanged
        If bg1.Checked = True Then
            Filled = False
        End If
    End Sub

    Private Sub bg2_CheckedChanged(sender As Object, e As EventArgs) Handles bg2.CheckedChanged
        If bg2.Checked = True Then
            Filled = True
        End If
    End Sub

    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
        If MsgBox("确认清屏!", vbInformation + vbYesNo, "自定义白板") = MsgBoxResult.Yes Then
            g1.Clear(Color.Transparent)
            Pic.Image = penImg
        End If
    End Sub

    Private Sub RadioButton1_CheckedChanged_1(sender As Object, e As EventArgs) Handles ls0.CheckedChanged
        If ls0.Checked = True Then
            pen.DashStyle = DashStyle.Solid
        End If
    End Sub

    Private Sub sc0_CheckedChanged(sender As Object, e As EventArgs) Handles sc0.CheckedChanged
        If sc0.Checked = True Then
            pen.StartCap = LineCap.Flat
        End If
    End Sub

    Private Sub sc1_CheckedChanged(sender As Object, e As EventArgs) Handles sc1.CheckedChanged
        If sc1.Checked = True Then
            pen.StartCap = LineCap.ArrowAnchor
        End If
    End Sub

    Private Sub sc2_CheckedChanged(sender As Object, e As EventArgs) Handles sc2.CheckedChanged
        If sc2.Checked = True Then
            pen.StartCap = LineCap.Round
        End If
    End Sub

    Private Sub ec0_CheckedChanged(sender As Object, e As EventArgs) Handles ec0.CheckedChanged
        If ec0.Checked = True Then
            pen.EndCap = LineCap.Flat
        End If
    End Sub

    Private Sub ec1_CheckedChanged(sender As Object, e As EventArgs) Handles ec1.CheckedChanged
        If ec1.Checked = True Then
            pen.EndCap = LineCap.ArrowAnchor
        End If
    End Sub

    Private Sub ec2_CheckedChanged(sender As Object, e As EventArgs) Handles ec2.CheckedChanged
        If ec2.Checked = True Then
            pen.EndCap = LineCap.Round
        End If
    End Sub

    Private Sub ls1_CheckedChanged(sender As Object, e As EventArgs) Handles ls1.CheckedChanged
        If ls1.Checked = True Then
            pen.DashStyle = DashStyle.Dot
        End If
    End Sub

    Private Sub ls2_CheckedChanged(sender As Object, e As EventArgs) Handles ls2.CheckedChanged
        If ls2.Checked = True Then
            pen.DashStyle = DashStyle.DashDot
        End If
    End Sub

    Private Sub ls3_CheckedChanged(sender As Object, e As EventArgs) Handles ls3.CheckedChanged
        If ls3.Checked = True Then
            pen.DashStyle = DashStyle.Dash
        End If
    End Sub

    Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
        func = 3
    End Sub

    Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
        func = 4
    End Sub

    Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
        func = 5
    End Sub

    Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
        func = 6
    End Sub

    Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
        func = 7
    End Sub

    Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
        func = 8
        s = InputBox("输入文字", "自定义白板")
    End Sub

    Private Sub Button5_MouseDown(sender As Object, e As MouseEventArgs) Handles Button5.MouseDown
        If e.Button = MouseButtons.Right Then
            If MsgBox("确认清屏!", vbInformation + vbYesNo, "自定义白板") = MsgBoxResult.Yes Then
                g1.Clear(Color.Transparent)
                Pic.Image = penImg
            End If
        End If
    End Sub

    Public Function PointList(p1 As Point, p2 As Point) As Rectangle
        Dim p3 As Point
        Dim p4 As Point
        Dim width As Integer
        Dim height As Integer
        Dim LeftTop As Point

        If p1.X < p2.X AndAlso p1.Y < p2.Y Then
            p3 = New Point(p2.X, p1.X)
            p4 = New Point(p1.X, p2.Y)
            width = p3.X - p1.X
            height = p4.Y - p1.Y
            LeftTop = p1
        ElseIf p1.X > p2.X AndAlso p1.Y < p2.Y Then
            p3 = New Point(p1.X, p2.Y)
            p4 = New Point(p2.X, p1.Y)
            width = p1.X - p4.X
            height = p2.Y - p4.Y
            LeftTop = p4
        ElseIf p1.X > p2.X AndAlso p1.Y > p2.Y Then
            p3 = New Point(p1.X, p2.X)
            p4 = New Point(p2.X, p1.Y)
            width = p3.X - p2.X
            height = p4.Y - p2.Y
            LeftTop = p2
        ElseIf p1.X < p2.X AndAlso p1.Y > p2.Y Then
            p3 = New Point(p2.X, p1.Y)
            p4 = New Point(p1.X, p2.Y)
            width = p2.X - p4.X
            height = p1.Y - p4.Y
            LeftTop = p4
        End If
        Return New Rectangle(LeftTop, New Size(width, height))
    End Function
    Dim TxtFont As New Font("微软雅黑", 30, FontStyle.Regular)
    Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click
        Dim fdlg As New FontDialog
        If fdlg.ShowDialog() = DialogResult.OK Then
            TxtFont = fdlg.Font
        End If
    End Sub

    Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click
        Panel3.Visible = False
    End Sub

    Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
        Panel3.Visible = True
        Panel3.Location = New Point(Button8.Location.X + Panel2.Location.X, Button8.Location.Y + Panel2.Location.Y - 250)
    End Sub

    Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click
        Button6.PerformClick()
    End Sub

    Public Function PointListT(p1 As Point, p2 As Point) As Rectangle
        Dim p3 As Point
        Dim p4 As Point
        Dim width As Integer
        Dim height As Integer
        Dim LeftTop As Point
        If p1.X < p2.X AndAlso p1.Y < p2.Y Then
            p3 = New Point(p2.X, p1.X)
            p4 = New Point(p1.X, p2.Y)
            width = p3.X - p1.X
            height = width
            LeftTop = p1
        ElseIf p1.X > p2.X AndAlso p1.Y < p2.Y Then
            p3 = New Point(p1.X, p2.Y)
            p4 = New Point(p2.X, p1.Y)
            width = p1.X - p4.X
            height = width
            LeftTop = p4
        ElseIf p1.X > p2.X AndAlso p1.Y > p2.Y Then
            p3 = New Point(p1.X, p2.X)
            p4 = New Point(p2.X, p1.Y)
            width = p3.X - p2.X
            height = width
            LeftTop = New Point(p1.X - width, p1.Y - width)
        ElseIf p1.X < p2.X AndAlso p1.Y > p2.Y Then
            p3 = New Point(p2.X, p1.Y)
            p4 = New Point(p1.X, p2.Y)
            width = p2.X - p4.X
            height = width
            LeftTop = New Point(p1.X, p1.Y - width)
        End If
        Return New Rectangle(LeftTop, New Size(width, height))
    End Function

    Private Sub Form1_DoubleClick(sender As Object, e As EventArgs) Handles Me.DoubleClick
        Pic.Location = New Point(0, 0)
    End Sub



    Dim Filled As Boolean
    Dim LineStyle As Integer = 0

End Class

源代码文件在这:camera类其实没有用,你们自己使用可以删掉它

链接:https://pan.baidu.com/s/1Q_TAzBGJ5FtjE3UHJuvYqw?pwd=1234 
提取码:1234

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/17864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员级别分析,看看你是哪个级别

关于程序员的工资众说纷纭&#xff0c;有说开七八千的&#xff0c;也有人说每月上万的&#xff0c;但不管怎么说&#xff0c;程序员的工资是真的比一些文职、行政人员岗位挣得多&#xff0c;大家都是靠自己的能力赚钱&#xff0c;这没什么可比的&#xff0c;况且大家都是在学习…

JAVASE零基础到高级教程(1)------ 集成开发环境安装使用

一 什么是环境变量 环境变量是在操作系统中⼀个具有特定名字的对象&#xff0c;它包含了⼀个或者多个应⽤程序所将使⽤到的 信息。例如Windows和DOS操作系统中的path环境变量&#xff0c;当要求系统运⾏⼀个程序⽽没有告诉它程 序所在的完整路径时&#xff0c;系统除了在当前⽬…

前端框架 Electron 使用总结

目录 一、基础搭建 通过脚手架搭建 1、Electron官方案例搭建环境 2、查看调试 3、菜单的使用 4、图标配置 5、项目打包 web应用相信每位程序员都不陌生&#xff0c;PC端应用可能会底层开发的就不是太多了&#xff0c;下面的这套技术栈就是为前端程序员快速一键搭建windo…

Linux学习——网络编程基础及TCP服务器

目录 一、网络采用分层的思想&#xff1a; 二、各层典型的协议&#xff1a; 三、网络的封包和拆包&#xff1a; 四、网络编程的预备知识 4.1.SOCKET 4.2 IP地址 4.3 端口号 4.4 字节序 五、TCP编程API TCP协议分成了两个不同的协议&#xff1a;可靠传输&#xff1a;用来检测网络…

读书笔记-学习GNU Emacs-3终篇

学习本书目的&#xff1a; emacs的学习一直是陆陆续续看博客和上手实践&#xff0c;这次想通过阅读"学习GNU Emacs"这本书好好系统的再复习下emacs。 yps:读技术书应该是带着一定的目的去读的&#xff0c;最简单的目的可能就是为了学好某一项技术或者复习下某一项技…

[附源码]java毕业设计社区健康服务平台管理系统lunwen

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

IDEA利用maven建立javaWeb项目(IDEA 2021.3.3)

1、在Idea中配置maven (1)、打开Idea&#xff0c;点击File&#xff0c;然后点击Settings&#xff0c;进入设置&#xff0c;或者直接按CtrlAltS进入设置 (2)、先在左上角的搜索框输入maven&#xff0c;找到maven后单击&#xff0c;然后在右边的maven home path的右边选择你的m…

置信度--学习笔记

置信区间是衡量测量精度的一个指标&#xff0c;也能显示出估算有多稳定&#xff0c;也就是说如果重复做某项实验&#xff0c;得到的结果与最初的估计有多接近。步骤&#xff1a; 确定要测试的情况&#xff1a;如“A大学男生的平均体重是80公斤”&#xff0c;则后续就是要测试在…

最新最全面的Spring详解(三)——Resources,验证、数据绑定和类型转换与Spring表达式语言(SpEL)

前言 本文为 【Spring】Resources与Spring表达式语言&#xff08;SpEL&#xff09; 等相关知识&#xff0c;下边将对Resources&#xff08;包含&#xff1a;Resource接口、内置的 Resource的实现、ResourceLoader接口、应用环境和资源路径&#xff09;&#xff0c;验证、数据绑…

浅谈化工生产制造企业软件系统的选择

现在大家都在讨论全球COVID流行和经济衰退对企业的影响&#xff0c;以及一个有作为的企业&#xff0c;在当下的环境下如何求生存和谋发展的问题。“埃森哲的一份报告发现&#xff0c;99%的首席运营官都认为&#xff0c;使用实时数据运营对于应对Covid或经济衰退威胁等至关重要。…

Java的JDBC编程

1. 数据库编程的必备条件 编程语言&#xff0c;如Java&#xff0c;C、C、Python等数据库&#xff0c;如Oracle&#xff0c;MySQL&#xff0c;SQL Server等数据库驱动包&#xff1a;不同的数据库&#xff0c;对应不同的编程语言提供了不同的数据库驱动包&#xff0c;如&#xf…

Telnet SMTP协议关于“535 Error: authentication failed“解决思路

计算机网络中应用层的SMTP(Simple Mail Transfer Protocol)协议可用来发送邮件&#xff0c;在Telnet使用SMTP登陆账号密码时出现“535 Error: authentication failed”问题。现记录解决步骤。 1. 确认在邮箱中已开启SMTP服务。 2. 按照扫码流程&#xff0c;获得授权密码&…

第六章第二节:图的遍历(广度优先遍历和深度优先遍历)和应用(最小生成树、最短路径、有向无环图的描述表达式、拓扑排序、关键路径)

文章目录1. 图的遍历1.1 广度优先搜索&#xff08;BFS&#xff09;1.1.1 遍历序列的可变性1.1.2 复杂度的分析1.1.3 广度优先生成树1..1.4 广度优先生成森林1.2 深度优先搜索&#xff08;DFS&#xff09;1.2.1 树的深度优先遍历1.2.2 图的深度优先遍历1.2.2 复杂度的分析1.2.4 …

Servlet | 域对象、request对象其它常用的方法

目录 一&#xff1a;域对象 1、应用域对象 2、请求域对象 二&#xff1a;request对象其它常用的方法 一&#xff1a;域对象 1、应用域对象 &#xff08;1&#xff09;应用域对象是什么&#xff1f; ServletContext &#xff08;Servlet上下文对象。&#xff09; 什么情况…

NCV7705DQAR2G 汽车电机驱动器(NCV7705DQR2G)引脚配置

型号&#xff1a;NCV7705DQAR2G NCV7705DQR2G 封装&#xff1a;36-BFSOP 类型&#xff1a;电机驱动器&#xff0c;控制器 NCV7705/NCV7705(A)是一款功能强大的汽车车身控制系统驱动IC。该集成电路设计用于控制车辆前门的多个负载。单片集成电路可以控制镜面定位、加热、折叠等…

JS测试出最小支持字体,以及修复PDFJS的文本错误偏移

PDFJS的文本层有时会有一个错误的整体偏移&#xff0c;导致文本处于错误位置&#xff0c;导致用户选择错误的文本。 为什么会这样呢&#xff1f;其一&#xff0c;如果浏览器的文本缩放不是100%&#xff0c;而PDFJS没有检测这一点&#xff0c;导致文本排布发生偏移。安卓可以通…

[附源码]java毕业设计人口老龄化社区服务与管理平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

一个Adapter+recycleview实现多种布局,区分布局中

文章目录&#x1f353;&#x1f353;简述&#x1f353;&#x1f353;效果图&#x1f353;&#x1f353;代码&#x1f96d;&#x1f96d;AllAdapter.java&#x1f96d;&#x1f96d; FuritAdapter3.java&#x1f96d;&#x1f96d;MainActivity.java(主函数)&#x1f96d;&#…

适合中小企业的CRM客户关系管理系统?

1、CRM如果体量30人及下列 这类民营企业的特征是没营业网点&#xff0c;分散办公设备&#xff0c;一职多能&#xff0c;没他们的IT控制技术职责部门。通常老板重大决策&#xff0c;子公司全体相关人员采用。 主要就采用目地是管理组织工作顾客档案&#xff0c;历史记录顾客数…

力扣138 - 复制带随机指针的链表【复杂链表的终极试炼】

想指☞哪就指哪儿~一、题目描述二、思路分析与罗列思路一&#xff1a;通过原链表的【random】去找控制拷贝链表的【random】思路二&#xff1a;直接链接到原链表处做相邻结点的【random】修改Step1&#xff1a;把复制的结点插入到原结点后Step2&#xff1a;设置拷贝结点的rando…