- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如何将图像从 CDC 传输到 CBitmap?整体问题:我在 CBitmap A 中有一个大图像。我需要将此图像的一部分传输到多个 CBitmap 以存储到 vector 中,因为我不能为此使用多个 CDC :)我将准备好的 CDC 制作成一个循环(获得 CBitmap A 的必要部分),然后我需要将它传输到 CBitmap x。我该怎么做?
这是我的代码:
m_bitmaps.clear();
m_bitmaps.reserve(4);
CDC SourceDC, destDC;
SourceDC.CreateCompatibleDC(pMainDC);
destDC.CreateCompatibleDC(pMainDC);
CBitmap bmpWhole; // bmp 200*200
bmpWhole.LoadBitmap(IDB_TEST_BITMAP);
SourceDC.SelectObject(&bmpWhole);
//pMainDC->BitBlt(0,0,200,200,&SourceDC,0,0,SRCCOPY);
//没关系 - 我有源图片
for (int x=100; x>=0; x-=100)
for (int y=100; y>=0; y-=100)
{
CBitmap *destBitmap = new CBitmap();
destBitmap->CreateCompatibleBitmap(&destDC, 100, 100);
CBitmap *oldBitmap = destDC.SelectObject(destBitmap);
destDC.BitBlt(0,0,100,100,&SourceDC,x,y,SRCCOPY);
pMainDC->BitBlt(x*1.1,y*1.1,100,100,&destDC,0,0,SRCCOPY);
//我这里有黑色方 block ! - 之前的代码有问题
m_bitmaps.push_back(destBitmap);
destDC.SelectObject(oldBitmap);
}
bmpWhole.DeleteObject();
destDC.DeleteDC();
SourceDC.DeleteDC();
//后面的CBitmaps都是黑色方 block
我找到了解决方案!
解析CBitmap并初始化 vector
m_bitmaps.clear();
m_bitmaps.reserve(4);
CDC SourceDC, destDC;
SourceDC.CreateCompatibleDC(pMainDC);
CBitmap bmpWhole;
bmpWhole.LoadBitmap(IDB_TEST_BITMAP);
SourceDC.SelectObject(&bmpWhole);
for (int x=100; x>=0; x-=100)
for (int y=100; y>=0; y-=100)
{
CImage *destImage = new CImage();
destImage->Create(100, 100, 24);
destDC.Attach(destImage->GetDC());
destDC.BitBlt(0,0,100,100,&SourceDC,x,y,SRCCOPY);
destDC.Detach();
destImage->ReleaseDC();
m_bitmaps.push_back(destImage);
}
bmpWhole.DeleteObject();
destDC.DeleteDC();
SourceDC.DeleteDC();
绘制:
WORD nShift=0;
for (auto iter = m_bitmaps.begin(); iter != m_bitmaps.end(); ++iter, nShift+=110)
{
CBitmap* pBitmap = CBitmap::FromHandle((*iter)->operator HBITMAP());
CDC memDC;
memDC.CreateCompatibleDC(pMainDC);
memDC.SelectObject(pBitmap);
pMainDC->BitBlt(nShift, 0, 100, 100, &memDC, 0, 0, SRCCOPY);
}
最佳答案
创建另一个设备上下文,一个接一个地创建目标位图并将其选择到其中,然后使用 BitBlt
将部分源位图复制到其中。以下是您如何执行此操作的示例。
// Create a DC compatible with the display
// this is used to copy FROM the source bitmap
sourceDC.CreateDC(NULL);
sourceDC.SelectObject(&sourceBitmap);
// Create another device context for the destination bitmap
destDC.CreateCompatibleDC(&sourceDC);
for(int i = 0; i < numBitmaps; i++)
{
// Determine the x, y, sourceX, sourceY, with and height here
// ...
// create a new bitmap
CBitmap *destBitmap = new CBitmap();
destBitmap->CreateCompatibleBitmap(&destDC, width, height);
// Select the bitmap into the destination device context
CBitmap *oldBitmap = destDC.SelectObject(destBitmap);
// copy the bitmap
destDC.BitBlt(x, y, width, height, &sourceDC, sourceX, sourceY, SRCCOPY);
// add it to the vector
bitmapVector.push_back(destBitmap);
// Clean up
destDC.SelectObject(oldBitmap);
}
为简单起见,我省略了错误检查。如果您使用的是 C++11 或 Boost,我建议您使用 unique_ptr
来管理位图对象的生命周期。否则,您需要在适当的地方(例如析构函数)删除
它。
关于c++ - 将图像从 CDC 传输到 CBitmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17416152/
我有一个要求,我想在新添加的表列上启用 CDC,但我无法禁用 CDC 并再次启用它。有什么办法可以实现这一目标吗? 我找到了一个解决方案,我可以将旧的 CDC 表值复制到临时表中,然后禁用 CDC,然
我已使用以下步骤启用 CDC: exec sys.sp_cdc_enable_db; exec sys.sp_cdc_enable_table @source_schema = N'dbo', @so
我正在尝试将AS400的IBM数据复制设置为MySQL。对于目标MySQL,现在是最新的MySQL 8.0.20社区服务器。我已经很好地测试了JDBC连接。但是,CDC实例永远不会启动(通过测试从8.
我正在寻找一种方法来捕获 mysql 插入、更新、删除操作并触发应用程序或脚本以使用这些修改后的数据以自定义格式插入到 mongodb 中。 最佳答案 也许这对于正在处理类似情况的人来说可能会派上用场
简介 Flink CDC Connector 是ApacheFlink的一组数据源连接器,使用变化数据捕获change data capture (CDC)从不同的数据库中提取变更数据。Fli
本文整理了Java中cdc.util.xml.XmlWriter类的一些代码示例,展示了XmlWriter类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台
是否可以将所有表的历史合并到一个表中? 我尝试使用 SQL server 2012 企业版 提供的 CDC 功能,但为此它创建了每个表的副本,这增加了数据库中表的数量。 是否也可以将发生DML的表名和
我正在 SQL Server 2012 企业版 (11.0.2100.60) 上启用更改数据捕获 (CDC) 。我可以使用以下 SQL 在数据库级别启用它,但无法在表级别启用。 Use Databas
我正在编写一个简单的虚拟串行端口设备来报告一个较旧的串行端口。至此,我能够枚举设备并发送/接收字符。 在从主机到设备的不同数量的批量传输之后,端点似乎放弃并停止传输数据。在 PC 端,我收到一个写入错
当我们谈论采购事件时,我们有一个简单的双写架构,我们可以写入数据库,然后将事件写入队列,如 Kafka。其他下游系统可以读取这些事件并相应地对它们采取行动/使用它们。 但是当尝试使数据库和事件同步时会
我读到,启用变更数据捕获显然会对数据库性能产生影响。这种性能损失是否仅影响启用了 CDC 的表,还是会影响数据库中的所有操作 就我而言,我使用的是 SSIS,并且有大量数据移入和移出临时数据库。我的系
我正在编写一个简单的虚拟串行端口设备来报告一个较旧的串行端口。至此,我能够枚举设备并发送/接收字符。 在从主机到设备的不同数量的批量传输之后,端点似乎放弃并停止传输数据。在 PC 端,我收到一个写入错
我尝试在WinCE环境中使用readfile函数从CDC设备读取数据。 BOOL WINAPI ReadFile( _In_ HANDLE hFile, _Out_
我将一些属于某些对象的符号绘制到设备上下文中,现在希望能够稍后测试鼠标光标是否位于此类符号之上。 为此,我的计划是首先创建一个 CDC 路径并使用它来创建一个 CRgn 区域对象。 pDC->Begi
我正在使用函数 CDC::Rectangle它使用逻辑坐标。但我想知道我绘制的区域有多大,因此我可以绘制区域宽度的 10% 的矩形。 如何从 CDC 获取坐标系的维度? 最佳答案 信不信由你,Wind
当我为我创建的报表控件打印 CDC 时,它看起来很小(在纸上小于 1 平方英寸)。如何让要打印的报告占据整个页面?或者换句话说,我怎样才能使整个报告显示在一个打印页面中。 CPrintDialog 打
我收到一个错误:在我的 myDC.DrawText 上调试断言失败?如果我删除那条线,图形就可以正常工作。 CPaintDC dc(this); CBitmap myBmp; CDC myDc; HA
在设备上下文中显示 IBitmapImage 的最佳方式是什么。我使用的是 Windows CE 6.0。 void CImaginingTestView::OnDraw(CDC* pDC) {
大家好,亲爱的专家和编码专家。 我不会从我是新手开始,对图像编程知之甚少,但不幸的是,这些都是事实:( 我正在尝试显示来自具有分辨率的位图指针 *ImageData 的图像1392x1032。我试图在
在我的一个项目中(VC++2010,MFC),我想用CDC::Ellipse画一个圆。我设置了两个点:第一个是圆心,第二个是我希望它在圆周上的一个点。 我将左上角和右下角的坐标传递给 CDC::Ell
我是一名优秀的程序员,十分优秀!