<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[言小非的专栏]]></title><description><![CDATA[码码虎虎]]></description><link>https://blog.youkuaiyun.com/timothy721</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; timothy721]]></copyright><item><title><![CDATA[WPF：带阴影、带箭头的Popup提示框]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/115330973</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/115330973</guid><author>timothy721</author><pubDate>Tue, 30 Mar 2021 17:19:14 +0800</pubDate><description><![CDATA[WPF：带阴影、带箭头的Popup提示框效果图实现思路下载地址参考连接
效果图

实现思路

首先感谢参考连接1的作者提供的思路


开始打算使用Border+三角形的方法来实现提示框，但是最后发现走不通，因为阴影会被遮挡
学习了一下WPF中的Path的绘制方法参考1+参考3
最后总结了一下阴影部分的实现方法

下载地址
Demo
参考连接
1.使用Popup制作带箭头的弹出提示框
2.自定义带尖括号和阴影的Popup框
3.WPF中图形表示语法详解

...]]></description><category></category></item><item><title><![CDATA[【FFMPEG】"width / height not divisible by 2" 解决方法]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/80929761</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/80929761</guid><author>timothy721</author><pubDate>Thu, 05 Jul 2018 16:58:07 +0800</pubDate><description><![CDATA[出现该错误的原因是在于：视频的宽度必须是32的倍数，高度必须是2的倍数解决方法：	if (screen_width % 32 != 0)
	{
		screen_width = screen_width / 32 * 32;
	}

	if (screen_height % 2 != 0)
	{
		screen_height = screen_height / 2 * 2;
	}...]]></description><category></category></item><item><title><![CDATA[【FFMPEG】打印 av_log 的输出]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/80929475</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/80929475</guid><author>timothy721</author><pubDate>Thu, 05 Jul 2018 16:50:01 +0800</pubDate><description><![CDATA[    在使用FFMPEG库的时候，如果有使用上的错误，FFMPEG 通过av_log 可以打印相应的消息到标准输出里。但有时候我们并没有标准输出，那么这个时候应该怎么处理呢?    方法：使用 av_log_set_callback 获取 av_log的打印输出。    示例如下：void Init()
{
	...
	av_log_set_callback(&amp;amp;FFMPEG_Callba...]]></description><category></category></item><item><title><![CDATA[【FFmpeg】 图像缩放]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/79880685</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/79880685</guid><author>timothy721</author><pubDate>Tue, 10 Apr 2018 14:43:28 +0800</pubDate><description><![CDATA[在用FFmpeg时遇到需要将截屏的图像（1920*1080）转换为 1024*768的问题。//截屏的编码上下文 
//假设这里视频截图分辨率为1920*1080
AVCodecContext  *pVideoCodecCtx = m_pVideoFormatCtx-&amp;gt;streams[nVideoIndex]-&amp;gt;codec;
......
//输出的编码上下文
AVCodecConte...]]></description><category></category></item><item><title><![CDATA[数据结构和算法【C语言】---单链表]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/79267219</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/79267219</guid><author>timothy721</author><pubDate>Tue, 06 Feb 2018 09:40:12 +0800</pubDate><description><![CDATA[#include 
#include 

typedef struct node
{
	int data;
	struct node *pNext;
}Node, *PNODE, *List;

PNODE CreateNode(int data)
{
	PNODE pNew = (Node *)malloc(sizeof(Node));
	pNew-&gt;data = data;
	pNew-&gt;pN]]></description><category></category></item><item><title><![CDATA[GitHub 配置详解]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/53018713</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/53018713</guid><author>timothy721</author><pubDate>Thu, 03 Nov 2016 10:10:44 +0800</pubDate><description><![CDATA[http://www.udpwork.com/item/11473.html
http://www.7down.com/article/86528.html]]></description><category></category></item><item><title><![CDATA[C#+IM+agsXMPP]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/41121145</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/41121145</guid><author>timothy721</author><pubDate>Fri, 14 Nov 2014 17:17:18 +0800</pubDate><description><![CDATA[参考网站：
1.管理软件IM开发www.cnblogs.com/cbi360/archive/2013/05/28/3103041.html]]></description><category></category></item><item><title><![CDATA[【练习】有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字，]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/40507225</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/40507225</guid><author>timothy721</author><pubDate>Mon, 27 Oct 2014 14:31:08 +0800</pubDate><description><![CDATA[有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字，并打印出来。

这两个文件内容如下：

context.txt

“并不是每个人都需要$(qunar)自己的粮食，$(flight.1)每个人都需要做自己穿的$(flight.2)，我们说着别人发明的$(hotel)，使用别人发明的数学......我们一直在$(tuan)别人的成果。使用人类的已有经验]]></description><category></category></item><item><title><![CDATA[HipHop php ：PhP 转 C++]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/39991793</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/39991793</guid><author>timothy721</author><pubDate>Sat, 11 Oct 2014 11:53:26 +0800</pubDate><description><![CDATA[使用资料： 
1.http://slaytanic.blog.51cto.com/2057708/962503/]]></description><category></category></item><item><title><![CDATA[【C++】链表学习]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/38678007</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/38678007</guid><author>timothy721</author><pubDate>Tue, 19 Aug 2014 10:14:36 +0800</pubDate><description><![CDATA[#include "stdafx.h"
#include 
using namespace std;

typedef struct Node
{
    int nVal;
    Node *pNext;
}Link,*pLink;

Link * CreateLink(int arr[], int n)
{
    if (0 == n)
    {
        return NULL;]]></description><category></category></item><item><title><![CDATA[SYSTEMTIME 与 time_t 互转函数]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/24715411</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/24715411</guid><author>timothy721</author><pubDate>Tue, 29 Apr 2014 14:47:40 +0800</pubDate><description><![CDATA[time_t SystemTimeToTime_t( const SYSTEMTIME& st )
{
    tm temptm = {st.wSecond, 
        st.wMinute, 
        st.wHour, 
        st.wDay, 
        st.wMonth - 1, 
        st.wYear - 1900, 
        st]]></description><category></category></item><item><title><![CDATA[【C++】查询、创建、设置注册表键值的示例代码]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/24714797</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/24714797</guid><author>timothy721</author><pubDate>Tue, 29 Apr 2014 14:44:36 +0800</pubDate><description><![CDATA[示例代码将在注册表位置：HKEY_CURRENT_USER\Software\  读写键值
bool LicenseManage::OpenRegKey(HKEY&amp; hRetKey)
{
    if (ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,&quot;Software&quot;, &amp;hRetKey))
    {
        return true;
 ]]></description><category></category></item><item><title><![CDATA[【C++】封装使用jsoncpp的类]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/19993495</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/19993495</guid><author>timothy721</author><pubDate>Wed, 26 Feb 2014 18:29:34 +0800</pubDate><description><![CDATA[封装使用jsoncpp的类包括5种功能
1.是否存在节点
    bool IsNodeExisted(string jsonObj, string strNode);   
2.为数组增加元素

    int AppendArrayObject(string&amp; jsonObj, string strNode, string strValue);

3.获取节点值
   int]]></description><category></category></item><item><title><![CDATA[[OpenSSL]编译过程]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/17757031</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/17757031</guid><author>timothy721</author><pubDate>Thu, 02 Jan 2014 14:55:12 +0800</pubDate><description><![CDATA[【1】方式1 vc2008命令行编译
    先下载ActivePerl，下载最新版本（现在是最新），文件名为ActivePerl-5.14.2.1402-MSWin32-x86-295342.msi。安装。
    下载openssl-1.0.1c,解压到C盘根目录下。
    接下来是下载Microsoft Visual C++ 2008 Redistributable，该软件有些人需要]]></description><category></category></item><item><title><![CDATA[【MFC】按钮点击拷贝到剪切板]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/17506005</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/17506005</guid><author>timothy721</author><pubDate>Mon, 23 Dec 2013 15:54:13 +0800</pubDate><description><![CDATA[void CXX::OnBnClickedCopyButton()
{
    CString strSource;
    GetDlgItemText(IDC_DISPLAY_EDIT,strSource);

    if(OpenClipboard())
    {  
        HGLOBAL hClip;  
        TCHAR* pBuffer;  
        E]]></description><category></category></item><item><title><![CDATA[【笔试题】整理一]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/17301655</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/17301655</guid><author>timothy721</author><pubDate>Fri, 13 Dec 2013 14:32:05 +0800</pubDate><description><![CDATA[1.

struct mybitfields 
{ 
unsigned short a : 4; 
unsigned short b : 5; 
unsigned short c : 7; 
}test

void main(void)  
{ 
int i; 
test.a=2; 
test.b=3; 
test.c=0;

i=*((short *)&test)]]></description><category></category></item><item><title><![CDATA[【算法】求二进制中1的个数]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/17259223</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/17259223</guid><author>timothy721</author><pubDate>Wed, 11 Dec 2013 10:21:21 +0800</pubDate><description><![CDATA[//除法
int Count(int src)
{
    int nNum = 0;
    while (src)
    {
        if (src % 2 == 1)
        {
            nNum++;
        }
        src /= 2;
    }
    return nNum;
}
//右移
int Count1(int src)
]]></description><category></category></item><item><title><![CDATA[【算法】给定正数N，求N的阶乘N!的末位有多少个0]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/17259085</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/17259085</guid><author>timothy721</author><pubDate>Wed, 11 Dec 2013 10:10:42 +0800</pubDate><description><![CDATA[int Factorial(int N)
{
    int nNum = 0;
    while (N)
    {
        if (N%5 == 0)
        {
            nNum++;
        }
        N--;
    }
    return nNum;
}理由是：由于只有2*5才可能出现末尾为0的情况，所以只需要考虑2和5的个数就可以]]></description><category></category></item><item><title><![CDATA[【C++】顺序容器 Vector 注意事项]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/8941273</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/8941273</guid><author>timothy721</author><pubDate>Fri, 17 May 2013 18:00:43 +0800</pubDate><description><![CDATA[引用头文件
#include 
一、操作数据
主要有下列几种方式：
    vector vecSalary;
    //1.直接添加
    vecSalary.push_back(2000);
    vecSalary.push_back(3000);
    //2.按位置添加
    vecSalary.insert(vecSalary.begin(), 1000);]]></description><category></category></item><item><title><![CDATA[【C++】容器元素的复制和变换]]></title><link>https://blog.youkuaiyun.com/timothy721/article/details/8941128</link><guid>https://blog.youkuaiyun.com/timothy721/article/details/8941128</guid><author>timothy721</author><pubDate>Fri, 17 May 2013 17:49:09 +0800</pubDate><description><![CDATA[一、复制容器元素：copy（）算法
copy（）的原形如下：

	template
		OutputIterator copy(
		InputIterator _First, //源容器起始位置
		InputIterator _Last, //源容器终止位置
		OutputIterator _DestBeg //目标容器的起始位置
		);列子：将两张成绩表统计到一起，形成一张成绩总表]]></description><category></category></item></channel></rss>