BitmapDataExtensionsCombine(IReadableBitmapData, IReadWriteBitmapData, IAsyncContext, FuncColorF, ColorF, ColorF, NullableRectangle, NullablePoint) Method

Combines the pixels of the source and target bitmaps using the specified combineFunction and a context that may belong to a higher level, possibly asynchronous operation, and writes the result into target.

Definition

Namespace: KGySoft.Drawing.Imaging
Assembly: KGySoft.Drawing.Core (in KGySoft.Drawing.Core.dll) Version: 10.0.0-rc.1
C#
public static bool Combine(
	this IReadableBitmapData source,
	IReadWriteBitmapData target,
	IAsyncContext? context,
	Func<ColorF, ColorF, ColorF> combineFunction,
	Rectangle? sourceRectangle = null,
	Point? targetLocation = null
)

Parameters

source  IReadableBitmapData
The source IReadableBitmapData to be combined with the target.
target  IReadWriteBitmapData
The target IReadWriteBitmapData into which the combined result should be written.
context  IAsyncContext
An IAsyncContext instance that contains information for asynchronous processing about the current operation.
combineFunction  FuncColorF, ColorF, ColorF
The custom function to be used to combine the colors of the bitmaps. Its first parameter represents a pixel in source, whereas the second parameter represents the corresponding pixel in target. The function must be thread-safe, as it might be called concurrently.
sourceRectangle  NullableRectangle  (Optional)
A Rectangle that specifies the portion of the source to be combined, or to take the entire source. This parameter is optional.
Default value: .
targetLocation  NullablePoint  (Optional)
A Point that specifies the target location, or to write the combined result to the top-left corner of the target. Target size will be always the same as the source size. This parameter is optional.
Default value: .

Return Value

Boolean
, if the operation completed successfully.
, if the operation has been canceled.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type IReadableBitmapData. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

Remarks

This method blocks the caller thread, but if context belongs to an async top level method, then the execution may already run on a pool thread. Degree of parallelism, the ability of cancellation and reporting progress depend on how these were configured at the top level method. To reconfigure the degree of parallelism of an existing context, you can use the AsyncContextWrapper class.

Alternatively, you can use this method to specify the degree of parallelism for synchronous execution. For example, by passing AsyncHelper.SingleThreadContext to the context parameter the method will be forced to use a single thread only.

When reporting progress, this library always passes a DrawingOperation instance to the generic methods of the IAsyncProgress interface.

  Tip

See the Examples section of the AsyncHelper class for details about how to create a context for possibly async top level methods.

Exceptions

ArgumentNullExceptionsource, target or combineFunction is .

See Also