Raize Components简介

Raizer是一个超过120个通用VCL组件的用户界面开发包,用在DelphiC++Builder 开发环境中。革新的特征如自定义框架和先进的带有预览技术的设计编辑器给开发者带来方便。开发者用只要很少的时间和工作量就能开发出久经考验的用户界面。

 

组件组织

Raize Components中的组件被分组到以下7个组件板上。
Raize Panels
Raize Edits
Raize Lists
Raize Buttons
Raize Display
Raize Shell
Raize Widgets

自定义边框

Raize Components
中的每个编辑域、list boxcombo boxtree viewlist view控件包含一套属性,它用于设置组件的外观。特别,当激活(FrameVisible = True)时,能够用11种不同的风格显示控件的边缘(FrameStyle, FrameColor)

自定义边框属性还允许开发者显示哪个边框。最后,所有的Raize Components能够作为线风格控件显示。这使得为创建应用程序选择的Raize Components能够模仿文件表格。另外,自定义边框属性支持当鼠标在控件上或者控件获取到输入焦点时显示第二个边框(如:FrameHotTrackFrameHotStyleFrameHotColor)。当然,自定义边框属性能够被关掉,这样组件能够显示缺省的边框。
Raize Components
中的自定义边框技术还提供额外的变更控件外观的方法。特别,FocusColor属性指定当控件获得输入焦点时的颜色。同样的,DisabledColor属性指定当控件禁用时的颜色。

XP主题
Raize Components
提供完全的Windows XP主题支持。缺省,当在一个应用程序中指定manifest标志,使用Common Controls version 6.0,组件将利用XP主题。然而,许多控件提供一个ThemeAware属性,通过设置ThemeAware值为False,它允许您忽略XP主题,在这种情况下,将使用内建显示技术显示组件。

所有的组件支持自定义边框,还支持FramingPreference属性。当FramingPreference属性被设置为fpXPThemes(缺省),将使用XP主题显示控件,设置FramingPreferencefpCustomFraming,即使XP主题可提供,也将使用自定义边框属性显示控件。

除额外的核心控件外,Raize Components包括100多个组件设计器,简单用户界面开发。

  • Raize Panels包括以下组件:TRzPanelTRzGroupBarTRzPageControlTRzTabControlTRzSplitterTRzSizePanelTRzToolbarTRzStatusBarTRzGroupBoxTRzRadioGroupTRzCheckGroupTRzDBRadioGroup
  • Raize Edits包括以下组件:TRzEditTRzMaskEditTRzButtonEditTRzDateTimeEditTRzNumericEditTRzSpinEditTRzColorEditTRzExpandEditTRzHotKeyEditTRzMemoTRzRichEditTRzSpinnerTRzTrackBarTRzDBEditTRzDBButtonEditTRzDBDateTimeEditTRzDBNumericEditTRzDBSpinEditTRzDBExpandEditTRzDBMemoTRzDBRichEditTRzDBSpinnerTRzDBTrackBar
  • Raize Lists包括以下组件:TRzListBoxTRzRankListBoxTRzTabbedListBoxTRzCheckListTRzEditListBoxTRzFontListBoxTRzComboBoxTRzImageComboBoxTRzFontComboBoxTRzMRUComboBoxTRzColorComboBoxTRzTreeViewTRzCheckTreeTRzListViewTRzDBListBoxTRzDBComboBoxTRzDBLookupComboBoxTRzDBRichEditTRzDBSpinnerTRzDBTrackBar
  • Raize Buttons包括以下组件:TRzButtonTRzBitBtnTRzMenuButtonTRzDialogButtonsTRzSpinButtonsTRzRapidFireButtonTRzCheckBoxTRzRadioButtonTRzToolButtonTRzSpacerTRzShapeButtonTRzBmpButtonTRzDBNavigatorTRzDBCheckBox
  • Raize Display包括以下组件:TRzFrameControllerTRzLabelTRzURLLabelTRzBorderTRzLineTRzSeparatorTRzStatusPaneTRzGlyphStatusTRzMarqueeStatusTRzClockStatusTRzKeyStatusTRzVersionInfoStatusTRzResourceStatusTRzProgressBarTRzMeterTRzLEDDisplayTRzBackgroundTRzAnimatorTRzDBLabelTRzDBStatusPaneTRzDBStateStatusTRzDBProgressBar
  • Raize Shell包括以下组件:TRzShellTreeTRzShellListTRzShellComboTRzOpenDialogTRzSaveDialogTRzSelectFolderDialog
  • Raize Widgets包括以下组件:TRzCalendarTRzTimePickerTRzColorPickerTRzCustomColorsTRzRegIniFileTRzFormStateTRzFormShapeTRzLauncherTRzTrayIconTRzVersionInfoTRzBalloonHintsTRzLookupDialogTRzSendMessageTRzDBLookupDialog

 

Welcome to Raize Components 6! Raize Components is a user interface design system for Delphi and C++Builder. At its center is a collection of more than 125 general-purpose native VCL controls. Built on a foundation of technology first created more than fifteen years ago, these high-quality components give developers unsurpassed power and flexibility without sacrificing ease-of-use. In addition to the core set of controls, Raize Components includes more than 100 component designers focused on simplifying user interface development. Now more than ever, developers use Raize Components to build sophisticated user interfaces in less time with less effort. The primary focus of Raize Components 6 is on the new VCL capabilities that have been added to Embarcadero RAD Studio starting with XE2. Specifically, 64-bit VCL support and the really cool new VCL Styles support. Unlike other releases of RAD Studio which simply required recompiling the existing code base to provide a new set of DCUs and packages, there were a lot of low-level changes made to the VCL in XE2. For example, many controls migrated smoothly to 64-bit, but many others required low-level modifications. In addition, every control in Raize Components was affected by the new VCL Styles. Each control's display code needed to be significantly modified to fully support for VCL Styles when they are available. It has been a lot of work, but we are certain that you will find the end result really cool! There are other enhancements and fixes included in Raize Components 6, but 64-bit and VCL Styles support are the major new features. Raize Components 6 definitely leverages RAD Studio XE2, and to get the most out of RC6, you need XE2.
这个报错是因为在使用 `multiprocessing.Pool` 进行并行处理时,锁对象 `lock` 不能直接传递给子进程。根据报错信息,锁对象只能通过继承的方式在子进程之间共享。 为了解决这个问题,你可以使用 `multiprocessing.Manager` 模块中的 `Lock` 对象来创建一个可在多个进程之间共享的锁。以下是修改后的示例代码: ```python import numpy as np import multiprocessing as mp def find_connected_components(image, start_row, end_row, disjoint_set, lock): rows, cols = image.shape for i in range(start_row, end_row): for j in range(cols): if image[i, j] == 1: # 如果当前像素点是前景点 neighbors = [] if i > 0 and image[i-1, j] == 1: neighbors.append((i-1, j)) if i < rows-1 and image[i+1, j] == 1: neighbors.append((i+1, j)) if j > 0 and image[i, j-1] == 1: neighbors.append((i, j-1)) if j < cols-1 and image[i, j+1] == 1: neighbors.append((i, j+1)) if len(neighbors) == 0: # 如果当前像素点没有相邻的前景点,则创建一个新的连通分量 with lock: disjoint_set.make_set((i, j)) else: # 如果当前像素点有相邻的前景点,则将其与相邻点合并为同一连通分量 with lock: for neighbor in neighbors: disjoint_set.union((i, j), neighbor) def parallel_connected_components(image, num_processes): rows, cols = image.shape # 使用并查集数据结构来记录连通分量 disjoint_set = DisjointSet() # 创建进程池 pool = mp.Pool(processes=num_processes) # 创建锁 manager = mp.Manager() lock = manager.Lock() # 计算每个进程处理的行数 chunk_size = rows // num_processes # 分配任务给不同的进程 results = [] for i in range(num_processes): start_row = i * chunk_size end_row = start_row + chunk_size if i < num_processes-1 else rows result = pool.apply_async(find_connected_components, (image, start_row, end_row, disjoint_set, lock)) results.append(result) # 等待所有进程完成 for result in results: result.get() # 关闭进程池 pool.close() pool.join() return disjoint_set # 示例使用的并查集数据结构 class DisjointSet: def __init__(self): self.parent = {} def make_set(self, x): self.parent[x] = x def find(self, x): if self.parent[x] != x: self.parent[x] = self.find(self.parent[x]) return self.parent[x] def union(self, x, y): root_x = self.find(x) root_y = self.find(y) if root_x != root_y: self.parent[root_x] = root_y # 示例 if __name__ == '__main__': # 二值图片示例 image = np.array([[0, 1, 0, 0, 1], [1, 1, 1, 0, 0], [0, 0, 1, 1, 0], [0, 0, 0, 0, 1], [1, 0, 1, 0, 1]]) # 并行处理连通分量 num_processes = 2 disjoint_set = parallel_connected_components(image, num_processes) # 输出每个连通分量的像素点集合 connected_components = {} for pixel in disjoint_set.parent: root = disjoint_set.find(pixel) if root not in connected_components: connected_components[root] = [] connected_components[root].append(pixel) print("Connected components:") for component in connected_components.values(): print(component) ``` 通过使用 `multiprocessing.Manager` 中的 `Lock` 对象,并在访问和修改 `disjoint_set` 数据结构时使用 `with lock` 块来保护共享资源的访问,可以确保并行处理过程中的线程安全性。 希望这次修改能解决你遇到的问题。如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值