MFC第二十六天 CRgn类简介与开发、封装CMemoryDC类并应用开发

文章目录

  • CRgn类简介与开发
    • CRgn类简介
    • CRgn类区域管理开发
    • CRgn类区域管理与不规则形状的选取
  • 封装CMemoryDC类并应用开发
    • CMemoryDC.h
    • 封装CMemoryDC开发游戏透明动画
      • CFlashDlg.h
      • CFlashDlg.cpp
    • 封装CMemoryDC开发游戏动画
  • 附录
    • 四大窗口CDC派生类

CRgn类简介与开发

CRgn类简介

CRgn类是MFC(Microsoft Foundation Classes)中的一个图形区域类。该类用于创建和操作图形区域,可以表示各种形状的区域,如矩形、椭圆、多边形等。

class CRgn : public CGdiObject
{
public:static CRgn* PASCAL FromHandle(HRGN hRgn);operator HRGN() const;// 封装的特点是没有使用Overload重载函数,结构体就是XXXIndirectCRgn();
//创建矩形区域BOOL CreateRectRgn(int x1, int y1, int x2, int y2);BOOL CreateRectRgnIndirect(LPCRECT lpRect);
//创建圆形区域BOOL CreateEllipticRgn(int x1, int y1, int x2, int y2);BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);
//多边形BOOL CreatePolygonRgn(LPPOINT lpPoints, int nCount, int nMode);BOOL CreatePolyPolygonRgn(LPPOINT lpPoints, LPINT lpPolyCounts,int nCount, int nPolyFillMode);
//圆角矩形BOOL CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3);
//BOOL CreateFromPath(CDC* pDC);BOOL CreateFromData(const XFORM* lpXForm, int nCount,const RGNDATA* pRgnData);// 修改矩形void SetRectRgn(int x1, int y1, int x2, int y2);void SetRectRgn(LPCRECT lpRect);
//混合int CombineRgn(const CRgn* pRgn1, const CRgn* pRgn2, int nCombineMode);int CopyRgn(const CRgn* pRgnSrc);
//判断区域完全一样BOOL EqualRgn(const CRgn* pRgn) const;
//判断一个点是否在区域内BOOL PtInRegion(int x, int y) const;BOOL PtInRegion(POINT point) const;
//保持形状不变偏移int OffsetRgn(int x, int y);int OffsetRgn(POINT point);
//框图int GetRgnBox(LPRECT lpRect) const;BOOL RectInRegion(LPCRECT lpRect) const;int GetRegionData(LPRGNDATA lpRgnData, int nCount) const;// Implementationvirtual ~CRgn();
};
CRgn类的混合功能:
int CombineRgn(    CRgn* pRgn1,    CRgn* pRgn2,    int nCombineMode  );RGN_AND   交集
RGN_COPY   拷贝
RGN_DIFF 不同
RGN_OR   并集
RGN_XOR   异或

CRgn类区域管理开发

CRgnDlg.h

#pragma once
class CCRgnDlg : public CDialogEx
{
// 构造CDC m_dc;CRect m_rect;
}

CRgnDlg.cpp

BOOL CCRgnDlg::OnInitDialog(){CDialogEx::OnInitDialog();CBitmap bmp;bmp.LoadBitmap(IDB_LOGO);BITMAP bm;bmp.GetBitmap(&bm);m_rect.SetRect(0,0, bm.bmWidth,bm.bmHeight );m_dc.CreateCompatibleDC(NULL);m_dc.SelectObject(&bmp);SetIcon(m_hIcon, TRUE);			// 设置大图标SetIcon(m_hIcon, FALSE);		// 设置小图标return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
//透明 一个去掉不要的区域进行显示  透明度(半透明)
void CCRgnDlg::OnPaint(){CPaintDC dc(this); // 用于绘制的设备上下文	CRgn rgn;  //输出区域管理  dc.FillSolidRect(CRect(10, 10, 700, 400), RGB(0, 255, 0)); //填充了一块背景区域CRect rect;rect = m_rect;rect.OffsetRect(50, 0);//rgn.CreateEllipticRgn(0, 0, m_rect.right, m_rect.bottom); //圆形区域管理rgn.CreateEllipticRgn(rect.left,rect.top, rect.right, rect.bottom);dc.SelectObject(&rgn);//dc.BitBlt(0, 0, m_rect.right, m_rect.bottom, &m_dc, 0, 0, SRCCOPY); //对图片的空白区域操作dc.BitBlt(50, 0, m_rect.Width(), m_rect.Height(), &m_dc, 0, 0, SRCCOPY);
}

在这里插入图片描述

CircleRgnDlg.h

#pragma once
class CCircleRgnDlg : public CDialogEx
{
// 构造CDC m_dc;CRect m_rect;
public:afx_msg LRESULT OnNcHitTest(CPoint point);
};

CircleRgnDlg.cpp

BOOL CCircleRgnDlg::OnInitDialog(){CDialogEx::OnInitDialog();CBitmap bmp;bmp.LoadBitmap(IDB_LOGO);BITMAP bm;bmp.GetBitmap(&bm);m_rect.SetRect(0, 0, bm.bmWidth, bm.bmHeight);SetWindowPos(NULL, 0, 0, m_rect.Width(), m_rect.Height(), SWP_NOMOVE | SWP_NOZORDER);m_dc.CreateCompatibleDC(NULL);m_dc.SelectObject(&bmp);CRgn rgn;rgn.CreateEllipticRgnIndirect(m_rect);SetWindowRgn(rgn, FALSE);return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
void CCircleRgnDlg::OnPaint()
{CPaintDC dc(this); // 用于绘制的设备上下文dc.BitBlt(0, 0, m_rect.right, m_rect.bottom, &m_dc, 0, 0, SRCCOPY);
}LRESULT CCircleRgnDlg::OnNcHitTest(CPoint point)
{return HTCAPTION;
}

在这里插入图片描述

CRgn类区域管理与不规则形状的选取

CCircleRgnDlg.h

class CCircleRgnDlg : public CDialogEx
{
// 构造CDC m_dc;CRect m_rect;
public:afx_msg LRESULT OnNcHitTest(CPoint point);afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
};

CCircleRgnDlg.cpp

BOOL CCircleRgnDlg::OnInitDialog(){CDialogEx::OnInitDialog();CBitmap bmp;bmp.LoadBitmap(IDB_LOGO);BITMAP bm;bmp.GetBitmap(&bm);m_rect.SetRect(0, 0, bm.bmWidth, bm.bmHeight);SetWindowPos(NULL, 0, 0, m_rect.Width(), m_rect.Height(), SWP_NOMOVE | SWP_NOZORDER);m_dc.CreateCompatibleDC(NULL);m_dc.SelectObject(&bmp);/*CRgn rgn;rgn.CreateEllipticRgnIndirect(m_rect);SetWindowRgn(rgn, FALSE);*/return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
//CRgn r, r1, r2;
//r.CreateEllipticRgn(20, 20, 500, 400);
//dc.SelectObject(&r);
//dc.BitBlt(0, 0, m_rect.right, m_rect.bottom, &m_dc, 0, 0, SRCCOPY);
//
//POINT pts[] = { {482,192},{568,302},{322,538},{123,357},{251,192},{360,320} };
//r1.CreatePolygonRgn(pts, _countof(pts), ALTERNATE);
//
//r2.CreateRectRgn(0, 0, 0, 0);
//
//r2.CombineRgn(&r, &r1, RGN_AND);
//r2.CombineRgn(&r, &r1, RGN_XOR);
//dc.SelectObject(&r2);
//dc.BitBlt(0, 0, m_rect.right, m_rect.bottom, &m_dc, 0, 0, SRCCOPY);
void CCircleRgnDlg::OnPaint()
{CPaintDC dc(this); // 用于绘制的设备上下文CRgn r,r1;r.CreateEllipticRgn(20, 20, 500, 400);POINT pts[] = {{482,192},{568,302},{322,538},{123,357},{251,192},{360,320}};r1.CreatePolygonRgn(pts, _countof(pts), ALTERNATE);r.CombineRgn(&r, &r1, RGN_XOR);dc.SelectObject(&r);CRect rect;r.GetRgnBox(rect);//框图要考虑如何恢复到之前图dc.BitBlt(0, 0, m_rect.right, m_rect.bottom, &m_dc, 0, 0, SRCCOPY); 
	BITMAP bm;dc.GetCurrentBitmap()->GetBitmap(&bm); //获取当前选中的位图对象,并将其信息存储在bm结构中。r.DeleteObject();r.CreateRectRgn(0, 0, bm.bmWidth, bm.bmHeight);dc.SelectObject(&r);dc.SelectStockObject(NULL_BRUSH); //绘制图形时使用的画刷对象设置为无画刷,即不填充图形dc.Rectangle(rect);
}
void CCircleRgnDlg::OnLButtonDown(UINT nFlags, CPoint point){ CRgn r, r1, r2;r.CreateEllipticRgn(20, 20, 500, 400);POINT pts[] = { {482,192},{568,302},{322,538},{123,357},{251,192},{360,320} };r1.CreatePolygonRgn(pts, _countof(pts), ALTERNATE);r.CombineRgn(&r, &r1, RGN_XOR);if (r.PtInRegion(point)){AfxMessageBox(_T("你选择了"));}CDialogEx::OnLButtonDown(nFlags, point);
}

在这里插入图片描述

封装CMemoryDC类并应用开发

CMemoryDC.h

/* 内存DC类简介:
1、BOOL LoadBitmap(UINT nBitmapID,CDC* pDC = NULL)	 从资源中按照,按位图ID加载位图
2、BOOL LoadFile(LPCTSTR sFile, CDC* pDC = NULL)	从exe外部加载图片(调用LoadImage)
3、BOOL Create(int cx, int cy, CDC* pDC = NULL)		创建空白位图(默认是全黑)4、总共有4种构造函数,包含以上3种还有空构造:
CMemoryDC(UINT nBitmapID)//从资源按照位图编号来加载
CMemoryDC(LPCTSTR sFile, CDC* pDC = NULL)//从exe外部加载
CMemoryDC(int cx, int cy, CDC* pDC=NULL)//指定高宽创建空白位图5、void MakeRgn(CRgn& r,COLORREF col)				生成透明区域
6、int GetWidth() const		int GetHeight() const	方便地获取图片高宽:
7、透明显示:BitTrans和StrecthTrans		*/
#pragma once
#include "resource.h"
class CMemoryDC :public CDC{CSize m_size;
public:CMemoryDC();int GetWidth() const{return m_size.cx;}int GetHeight() const{return m_size.cy;}CSize GetSize() const	{return m_size;}
	void BitTrans(int nXDest,		// 目标起点Xint nYDest,		// 目标起点Yint nWidthDest,	// 目标宽度int nHeightDest,// 目标高度CDC* pDC,		// 目标DCint nXSrc,		// 来源起点Xint nYSrc,		// 来源起点YCOLORREF crTrans// 透明色){CMemoryDC dcImage(nWidthDest, nHeightDest, pDC);//临时DCCBitmap bmpMask;bmpMask.CreateBitmap(nWidthDest, nHeightDest, 1, 1, NULL);       // 创建单色掩码位图CDC dcMask;//掩码DC dcMask.CreateCompatibleDC(pDC);dcMask.SelectObject(bmpMask);//将载入位图的内存DC中的位图,拷贝到临时DC中dcImage.BitBlt(0, 0, nWidthDest, nHeightDest, this, nXSrc, nYSrc, SRCCOPY);// 设置临时DC的透明色dcImage.SetBkColor(crTrans);//掩码DC的透明区域为白色其它区域为黑色dcMask.BitBlt(0, 0, nWidthDest, nHeightDest, &dcImage, 0, 0, SRCCOPY);//临时DC透明区域为黑色,其它区域保持不变dcImage.SetBkColor(RGB(0, 0, 0));dcImage.SetTextColor(RGB(255, 255, 255));dcImage.BitBlt(0, 0, nWidthDest, nHeightDest, &dcMask, 0, 0, SRCAND);// 目标DC透明部分保持屏幕不变,其它部分变成黑色pDC->SetBkColor(RGB(255, 255, 255));pDC->SetTextColor(RGB(0, 0, 0));pDC->BitBlt(nXDest, nYDest, nWidthDest, nHeightDest, &dcMask, 0, 0, SRCAND);pDC->BitBlt(nXDest, nYDest, nWidthDest, nHeightDest, &dcImage, 0, 0, SRCPAINT);}void StretchTrans(int nXDest,			// 目标起点Xint nYDest,			// 目标起点Yint nWidthDest,     // 目标宽度int nHeightDest,    // 目标高度CDC* pDC,			// 目标DCint nXSrc,			// 来源起点Xint nYSrc,			// 来源起点Yint nWidthSrc,		// 来源宽度int nHeightSrc,		// 来源高度COLORREF crTrans	// 透明色){CMemoryDC dcImage(nWidthDest, nHeightDest, pDC);//临时DCCBitmap bmpMask;// 创建单色掩码位图bmpMask.CreateBitmap(nWidthDest, nHeightDest, 1, 1, NULL);CDC dcMask;dcMask.CreateCompatibleDC(pDC);dcMask.SelectObject(bmpMask);// 将载入位图的内存DC中的位图,拷贝到临时DC中if (nWidthDest == nWidthSrc && nHeightDest == nHeightSrc)dcImage.BitBlt(0, 0, nWidthDest, nHeightDest, this, nXSrc, nYSrc, SRCCOPY);elsedcImage.StretchBlt(0, 0, nWidthDest, nHeightDest,this, nXSrc, nYSrc, nWidthSrc, nHeightSrc, SRCCOPY);// 设置临时DC的透明色dcImage.SetBkColor(crTrans);//掩码DC的透明区域为白色其它区域为黑色dcMask.BitBlt(0, 0, nWidthDest, nHeightDest, &dcImage, 0, 0, SRCCOPY);//临时DC透明区域为黑色,其它区域保持不变dcImage.SetBkColor(RGB(0, 0, 0));dcImage.SetTextColor(RGB(255, 255, 255));dcImage.BitBlt(0, 0, nWidthDest, nHeightDest, &dcMask, 0, 0, SRCAND);// 目标DC透明部分保持屏幕不变,其它部分变成黑色pDC->SetBkColor(RGB(255, 255, 255));pDC->SetTextColor(RGB(0, 0, 0));pDC->BitBlt(nXDest, nYDest, nWidthDest, nHeightDest, &dcMask, 0, 0, SRCAND);pDC->BitBlt(nXDest, nYDest, nWidthDest, nHeightDest, &dcImage, 0, 0, SRCPAINT);}
	BOOL Create(int cx, int cy, CDC* pDc = NULL){	//创建空位图if (!CreateCompatibleDC(NULL))return FALSE;CBitmap bmp;if (pDc)	{if (!bmp.CreateCompatibleBitmap(pDc, cx, cy)) {DeleteDC();return FALSE;		}}else{if (!bmp.CreateCompatibleBitmap(&CClientDC(NULL), cx, cy)){DeleteDC();return FALSE;	}}this->SelectObject(&bmp);m_size.SetSize(cx, cy);return TRUE;	}
	BOOL LoadFile(LPCTSTR sFile, CDC* pDC = NULL){	//加载一张exe外部位图HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, sFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);if (!hBitmap)return FALSE;	if (!CreateCompatibleDC(NULL)){DeleteObject(hBitmap);return FALSE;}SelectObject(hBitmap);BITMAP bm;GetObject(hBitmap, sizeof(bm), &bm);m_size.SetSize(bm.bmWidth, bm.bmHeight);DeleteObject(hBitmap);return TRUE;}
	BOOL LoadBitmap(UINT nBitmapID, CDC* pDC = NULL)	//加载一张资源位图{if (!CreateCompatibleDC(NULL))return FALSE;CBitmap bmp;if (!bmp.LoadBitmap(nBitmapID)){DeleteDC();return FALSE;}SelectObject(&bmp);BITMAP bm;bmp.GetBitmap(&bm);m_size.SetSize(bm.bmWidth, bm.bmHeight);return TRUE;}
	CMemoryDC(UINT nBitmapID){LoadBitmap(nBitmapID);}CMemoryDC(LPCTSTR sFile,CDC* pDC = NULL){LoadFile(sFile, pDC);}CMemoryDC(int cx,int cy,CDC* pDC=NULL){Create(cx, cy, pDC);}
	void MakeRgn(CRgn& r, COLORREF col){r.CreateRectRgn(0, 0, 0, 0);int i = -1, cx = m_size.cx;int j = -1, cy = m_size.cy;while (++j<cy)	{i = -1;while (++i<cx){if (GetPixel(i, j) != col)	{CRgn r1;r1.CreateRectRgn(i, j, i + 1, j + 1); //1*1像素r.CombineRgn(&r, &r1, RGN_OR);}}}}};

封装CMemoryDC开发游戏透明动画

CFlashDlg.h

#pragma once
#include "CMemoryDC.h"
class CCFlashDlg : public CDialogEx{//二维动画 不停的切换7张图, x y方向不断地移动int m_nIndex{}; //第几张图片CPoint m_pos{}, m_dir{ 5,5 };//m_pos偏移位置 m_dir每次运动5,5enum {Fly_nCount =7}; //图片总数CMemoryDC m_dcBack{_T("./res/back.bmp")}; //背景图片CMemoryDC m_dcFlys[Fly_nCount]; //蝴蝶CRgn m_rs[Fly_nCount]; //取出背景颜色void LoadPictures();public:afx_msg void OnTimer(UINT_PTR nIDEvent);
};

CFlashDlg.cpp

#include "pch.h"
#include "framework.h"
#include "CFlash.h"
#include "CFlashDlg.h"
#include "afxdialogex.h"
void CCFlashDlg::LoadPictures(){int i = -1;CString str;while (++i<_countof(m_dcFlys)){str.Format(_T("./res/%03d.bmp"), i + 1);m_dcFlys[i].LoadFile(str);m_dcFlys[i].MakeRgn(m_rs[i],0x00ff00ff);}
}
BOOL CCFlashDlg::OnInitDialog()
{CDialogEx::OnInitDialog();int cx = GetSystemMetrics(SM_CXSCREEN);int cy = GetSystemMetrics(SM_CYSCREEN);SetWindowPos(NULL, 0, 0, cx/2, cy/2, SWP_NOZORDER);LoadPictures();SetTimer(1, 16, NULL);return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
void CCFlashDlg::OnPaint()
{CPaintDC dc(this); // 用于绘制的设备上下文CRect rect;GetClientRect(rect);dc.SetStretchBltMode(STRETCH_HALFTONE);dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &m_dcBack, 0, 0, m_dcBack.GetWidth(), m_dcBack.GetHeight(), SRCCOPY);CMemoryDC mdc(200,180); //创建默认的黑色if (mdc.GetSafeHdc())dc.BitBlt(200, 150, 200, 180, &mdc, 0, 0, SRCCOPY);//CRgn r;//r.CreateRectRgn(0, 0, 0, 0); //基址//r.CopyRgn(m_rs+m_nIndex);  //往那个跑先复制出来 不要破坏它 形状//r.OffsetRgn(m_pos); //你要输出到那个位置//dc.SelectObject(&r);//dc.BitBlt(m_pos.x, m_pos.y, m_dcFlys->GetWidth(),m_dcFlys->GetHeight(), m_dcFlys + m_nIndex, 0, 0,SRCCOPY);auto pDC = m_dcFlys + m_nIndex; //等价于 :&m_dcFlys[m_nIndex]pDC->BitTrans(m_pos.x, m_pos.y, pDC->GetWidth(), pDC->GetHeight(), &dc, 0, 0, 0xff00ff);if (++m_nIndex >= Fly_nCount)m_nIndex = 0 ;if (m_pos.x + m_dcFlys->GetWidth() > rect.right || m_pos.x < 0)m_dir.x *= -1;if (m_pos.y + m_dcFlys->GetHeight() > rect.bottom || m_pos.y < 0)m_dir.y *= -1;
}
void CCFlashDlg::OnTimer(UINT_PTR nIDEvent)
{m_pos.Offset(m_dir);Invalidate(FALSE);CDialogEx::OnTimer(nIDEvent);
}

在这里插入图片描述

封装CMemoryDC开发游戏动画

QQDlg.h

#pragma once
#include "CMemoryDC.h"
class CQQDlg : public CDialogEx
{CPoint m_pos{}, m_dir{ 5,5 }; enum { Fly_nCount = 7 }; //图片总数CMemoryDC m_dcFlys[Fly_nCount]; //蝴蝶CRgn m_rs[Fly_nCount];  int m_nIndex{ 0 };
public:afx_msg void OnTimer(UINT_PTR nIDEvent);
};

QQDlg.cpp

BOOL CQQDlg::OnInitDialog(){CDialogEx::OnInitDialog();int i = -1;while (++i < _countof(m_dcFlys)){m_dcFlys[i].LoadBitmap(IDB_FLY1 + i);m_dcFlys[i].MakeRgn(m_rs[i], 0xff00ff);}SetTimer(1, 16, NULL);CRgn r;r.CreateRectRgn(0, 0, 0, 0);r.CopyRgn(&m_rs[m_nIndex]);SetWindowRgn(r, FALSE);SetWindowPos(NULL, m_pos.x, m_pos.y, m_dcFlys->GetWidth(), m_dcFlys->GetHeight(), SWP_NOZORDER);return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
void CQQDlg::OnPaint()
{CPaintDC dc(this); // 用于绘制的设备上下文int cx = m_dcFlys->GetWidth();int cy = m_dcFlys->GetHeight();dc.BitBlt(0, 0, cx, cy, &m_dcFlys[m_nIndex], 0, 0, SRCCOPY);if (++m_nIndex >= _countof(m_dcFlys)){m_nIndex = 0;}
}
void CQQDlg::OnTimer(UINT_PTR nIDEvent){CDialogEx::OnTimer(nIDEvent);CRgn r;r.CreateRectRgn(0, 0, 0, 0);r.CopyRgn(&m_rs[m_nIndex]);SetWindowRgn(r,FALSE);	 //不这样的话到第七帧的时候就会出来阴影Invalidate(FALSE);SetWindowPos(NULL, m_pos.x, m_pos.y,0,0, SWP_NOZORDER | SWP_NOSIZE);m_pos.Offset(m_dir);int cx = GetSystemMetrics(SM_CXSCREEN);int cy = GetSystemMetrics(SM_CYSCREEN);if (m_pos.x + m_dcFlys->GetWidth() > cx || m_pos.x < 0)m_dir.x *= -1;if (m_pos.y + m_dcFlys->GetHeight() > cy || m_pos.y < 0)m_dir.y *= -1;		}

在这里插入图片描述

附录

四大窗口CDC派生类

CPaintDC,CClientDC,CWindowDC,CMemoryDC类
CBitmap对象创建后,默认所有像素都是黑色,0x00000000四个字节一个像素。

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

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

相关文章

Qt 6. 其他类调用Ui中的控件

1. 把主类指针this传给其他类&#xff0c;tcpClientSocket new TcpClient(this); //ex2.cpp #include "ex2.h" #include "ui_ex2.h"Ex2::Ex2(QWidget *parent): QDialog(parent), ui(new Ui::Ex2) {ui->setupUi(this);tcpClientSocket new TcpClient…

mysql重置和修改密码 Ubuntu系统

忘记密码要重置密码 cat /etc/mysql/debian.cnf/etc/mysql/debian.cnf这个只有Debian或者Ubuntu服务器才有&#xff0c;里面有mysql安装后自带的用户&#xff0c;作用就是重启及运行mysql服务。我们用这个用户登录来达到重置密码的操作 使用上面的那个文件中的用户名和密码登…

【腾讯云Cloud Studio实战训练营】React 快速构建点餐页面

前言&#xff1a; Cloud Studio是一个在线的云集成开发环境&#xff08;IDE&#xff09;&#xff0c;可以让开发人员在浏览器中轻松地开发、测试、调试和部署应用程序。它提供了基于云的计算资源和工具&#xff0c;例如代码编辑器、编译器、调试器、版本控制系统和项目管理工具…

IDEA超强XSD文件编辑插件-XSD / WSDL Visualizer

前言 XSD / WSDL Visualizer可以简化XML架构定义(XSD)和WSDL文件编辑过程; 通过使用与IntelliJ无缝集成的可视化编辑器&#xff0c;转换处理XSD和WSDL文件的方式。告别导航复杂和难以阅读的代码的挫败感&#xff0c;迎接流线型和直观的体验。 插件安装 在线安装 IntelliJ IDE…

第三方控价服务流程

控价是一项需要技术和经验双重协作才能完成好的工作&#xff0c;技术指的是监控价格&#xff0c;经验指的是治理乱价&#xff0c;二者缺一不可&#xff0c;很多品牌会选择自己去完成&#xff0c;自己开发系统&#xff0c;组建治理团队&#xff0c;成本相对更高&#xff0c;也有…

LabVIEW开发高压航空航天动力系统爬电距离的测试

LabVIEW开发高压航空航天动力系统爬电距离的测试 更多电动飞机MEA技术将发电&#xff0c;配电和用电集成到一个统一的系统中&#xff0c;提高了飞机的可靠性和可维护性。更多的电动飞机使用更多的电能来用电动替代品取代液压和气动系统。对车载电力的需求不断增加&#xff0c;…

Emacs之设置行号前景颜色(字体颜色)/背景颜色/光标颜色/背景透明度(一百二十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Python+Selenium+Unittest 之selenium10--元素定位9-find_elements()

前面说了find_element()的几种定位方式&#xff0c;这次说下find_elements()的用法。 find_elements()从字面上就能看出比find_element()多了s&#xff0c;在英语中多s一般指某个单词的复数形式&#xff0c;在selenium中也是同理&#xff0c;find_element()是用来定位一个元素的…

节能延寿:ARM Cortex-M微控制器下的低功耗定时器应用

嵌入式系统的开发在现代科技中发挥着至关重要的作用。它们被广泛应用于从智能家居到工业自动化的各种领域。在本文中,我们将聚焦于使用ARM Cortex-M系列微控制器实现低功耗定时器的应用。我们将详细介绍在嵌入式系统中如何实现低功耗的定时器功能,并附上代码示例。 嵌入式系…

常见的数据结构(顺序表、顺序表、链表、栈、队列、二叉树)

线性表&#xff08;Linear List&#xff09;  1.什么是线性表 2.线性表的特点 3.线性表的基本运算 顺序表 1.什么是顺序表 2.时间复杂度&#xff1a; 链表 1.什么是链表 2.单向链表 3. 双向链表 4.ArrayList和LinkedList的使用 栈Stack  1.什么是栈  2.栈的基本方法 队列…

机器学习入门之 pandas

pandas 有三种数据结构 一种是 Series 一种是 Dataframe import pandas as pd import numpy as np score np.random.randint(0,100,[10,5])score[0,0] 100Datascore pd.DataFrame(score)subject ["语文","数学","英语","物理&quo…

Day01-作业(HTMLCSS)

作业1&#xff1a;通过HTML的标签及CSS样式&#xff0c;完成如下企业简介html页面的制作 A. 最终效果如下&#xff1a; B. 文字素材如下&#xff1a; 企业简介传智教育(股票代码 003032)&#xff0c;隶属江苏传智播客教育科技股份有限公司&#xff0c;注册资本4亿元&#xff0…

918. 环形子数组的最大和;2531. 使字符串总不同字符的数目相等;1238. 循环码排列

918. 环形子数组的最大和 核心思想&#xff1a;其实这题不加环形很好做&#xff0c;就是一个动态规划或者贪心就能够解决。加了环形我们应该怎么考虑呢&#xff0c;无非就是两种&#xff0c;第1种是子数组只包含首尾的一个&#xff0c;我们直接求子数组的最大连续和即可&#…

服务器运行python程序的使用说明

服务器的使用与说明 文章目录 服务器的使用与说明1.登录2.Python的使用2.1 服务器已安装python32.2 往自己的用户目录安装python31.首先下载安装包2.解压缩3.编译与安装 2.3 新建环境变量2.4 测试 3 创建PBS作业并提交 1.登录 windowsr打开运行命令窗口&#xff0c;在运行框中…

Leaflet.Control.Opacity 控制图层的透明度

最新有一个需求&#xff0c;能动态的控制Leaflet.js 地图图层的透明度&#xff0c;官网文档: https://leafletjs.com/reference.html#gridlayer-setopacity 一直有个setOpacity方法&#xff0c;我以为拿来就能使呢&#xff0c;其实不行。后来找到一个日本人开发的demo: 右侧Co…

2023值得关注的人工智能7大发展趋势

随着人工智能技术的不断创新和应用&#xff0c;我们可以看到人工智能在各个领域的应用越来越广泛。其中&#xff0c;有一些趋势特别值得我们关注。 1&#xff09;深度学习技术的发展 深度学习技术在图像识别、语音识别、自然语言处理等领域表现出色&#xff0c;随着硬件计算能…

部署安装私服-Gitlab

一、国内的gitlab是极狐 www.gitlab.cn 国服 www.github.com 国际服 二、国服的gitlab蛮适合中国国情的 1.提交申请可以获得30天的订阅版服务&#xff0c;有需要的话可以先提交一下。订阅后功能多一些。 Gitlab中文官网下载_GitLab免费下载安装_极狐GitLab免…

计算机视觉:替换万物Inpaint Anything

目录 1 Inpaint Anything介绍 1.1 为什么我们需要Inpaint Anything 1.2 Inpaint Anything工作原理 1.3 Inpaint Anything的功能是什么 1.4 Segment Anything模型&#xff08;SAM&#xff09; 1.5 Inpaint Anything 1.5.1 移除任何物体 1.5.2 填充任意内容 1.5.3 替换任…

【设计模式——学习笔记】23种设计模式——访问者模式Visitor(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入要求传统方案 介绍基本介绍应用场景登场角色尚硅谷版本《图解设计模式》版本 案例实现案例一实现拓展 案例二(个人感觉这个案例较好)实现分析拓展一拓展二拓展三 总结额外知识双重分发 文章说明 案例引入 要求 测评系统需求&#xff1a;将观众分为男人和女人…

学了一个礼拜 JavaScript 为什么还是学不会?

前言 首先从你的描述里面我先以我的主观臆断来猜测一下你是没有任何编程的基础的&#xff0c;Js按理来说在各语言中并不是非常难学&#xff0c;当然如果你是纯新手入门&#xff0c;那么确实前期需要时间来沉淀一下语法&#xff0c;一个礼拜的话&#xff0c;按理来说应该是在沉…