使用过C# Winform的朋友们,可能会发现,Winform自带的空间库里面是没有简单的绘图控件的,比如线条,箭头等等。如果我们需要显示类似的图形的时候,我们就需要直接在窗口上进行绘制。说实话,我是不太习惯这么搞的,坐标定位比较麻烦,而且当窗口扩大或者缩小时,绘制的图形还需要重新定位。
因此,在本文中,我创建了可以实现线条和箭头的控件,这样,可以代替窗口上直接绘制,而且能够重复使用。当然,我之前的文章也有介绍其他一些基础控件的自定义,如果有兴趣的朋友们可以看看,链接如下:
2025年08月12日
使用过C# Winform的朋友们,可能会发现,Winform自带的空间库里面是没有简单的绘图控件的,比如线条,箭头等等。如果我们需要显示类似的图形的时候,我们就需要直接在窗口上进行绘制。说实话,我是不太习惯这么搞的,坐标定位比较麻烦,而且当窗口扩大或者缩小时,绘制的图形还需要重新定位。
因此,在本文中,我创建了可以实现线条和箭头的控件,这样,可以代替窗口上直接绘制,而且能够重复使用。当然,我之前的文章也有介绍其他一些基础控件的自定义,如果有兴趣的朋友们可以看看,链接如下:
2025年08月12日
最近一直在研究C#的自定义控件,因为在实际开发使用中发现C# winform的自定义控件并不满足需求。因此,自己在逐步开始接触自定义控件,并将其记录。
首先,先完成一个最基本控件的实现,即一个面板,说起来就是一个框,这个框,可以调节里面的填充颜色,设置框线的宽度,虚实线类型,是方形,圆形或者椭圆形等。
2025年08月12日
Camera raw是PS的一款独立的滤镜,带有蒙版功能(图1所示虚线圆为蒙版工具组)。
2025年08月11日
一句话总结
检测死锁:使用jstack分析线程转储或通过ThreadMXBean的findDeadlockedThreads方法。
预防死锁:1.按固定顺序获取锁,破坏循环等待;2.避免嵌套锁;3.使用tryLock设置超时机制;4.减少同步代码块范围。
2025年08月11日
源码分析
countDownLatch()
构造方法中传入了一个int值,就是需要并发的线程数
进一步看是设置状态的值为count
2025年08月11日
CountDownLatch 和 CyclicBarrier 是 Java 并发编程中两个常用的同步工具类,它们都可以用于协调多个线程之间的执行顺序和状态,都可以理解成维护的就是一个计数器,但是这两者还是各有不同侧重点的:
2025年08月11日
前几天我们把 ReentrantLock的原理 进行了详细的讲解,不熟悉的同学可以翻看前文,今天我们介绍另一种基于 AQS 的同步工具——CountDownLatch。
2025年08月11日
CountDownLatch是一个同步工具类,用来协调多个线程之间的同步(即:用于线程之间的通信而不是互斥)。它允许一个或多个线程进入等待状态,直到其他线程执行完毕后,这些等待的线程才继续执行。